-- fake BSDL file for test purposes
-- Copyright 2026 Darrell Harmon
-- MIT license
-- intentionally a bit messy to test whitespace variations
-- commment
-- some tabs before a comment
-- maybe it has something that's not ASCII 💩
entity PDP_11 is
generic (PHYSICAL_PIN_MAP : string := "QFN_20" );
-- comment
port (
VDD: linkage bit_vector (1 to 4);
GND: linkage bit;
-- some have a comment in the middle of the port list
CLK: in bit;
RESET_N: in bit;
D: inout bit_vector(0 to 3); -- bit vector on actual data is rare
CSN: out bit;
SCK: out bit;
TMS: in bit;
TCK: in bit;
TDI: in bit;
TDO: out bit;
GT_RXN0: in bit;
GT_RXP0: in bit;
GT_TXN0: buffer bit;
GT_TXP0: buffer bit
);
use STD_1149_1_2001.all;
use STD_1149_6_2003.all;
attribute COMPONENT_CONFORMANCE of PDP_11 : entity is "STD_1149_1_2001";
attribute PIN_MAP of PDP_11 : entity is PHYSICAL_PIN_MAP;
constant QFN_20 : PIN_MAP_STRING :=
"VDD: (" &
"1, 2, 20, 19)," &
"GND: 21," &
"D: (3, 4, 5, 6),"&
"RESET_N: 13," &
"GT_RXP0: 14," &
"GT_RXN0: 15," &
"GT_TXP0: 16," &
"GT_TXN0: 17," &
"CLK: 18," &
"SCK: 7," &
"CSN: 8," &
"TMS: 9," &
"TCK: 10," &
"TDI: 11," &
"TDO: 12";
attribute PORT_GROUPING of PDP_11 : entity is
"DIFFERENTIAL_VOLTAGE (" &
"(GT_RXP0, GT_RXN0), " &
"(GT_TXP0, GT_TXN0))";
attribute TAP_SCAN_IN of TDI : signal is true;
attribute TAP_SCAN_MODE of TMS : signal is true;
attribute TAP_SCAN_OUT of TDO : signal is true;
attribute TAP_SCAN_CLOCK of TCK : signal is (1234.56e6, BOTH);
attribute INSTRUCTION_LENGTH of PDP_11 : entity is 5;
attribute INSTRUCTION_OPCODE of PDP_11 : entity is
"IDCODE (00000)," &
"BYPASS (11111),"&
"SAMPLE (00001)," &
"PRELOAD (00010)," &
"EXTEST (00x11)," & -- we can have x bits in instructions
"PRIVATE (00000, 10000, 00100), "& -- we can have multiple opcodes per instruction
"USER (00100)";
attribute INSTRUCTION_CAPTURE of PDP_11 : entity is "XXX01";
attribute IDCODE_REGISTER of PDP_11: entity is
"X001" &
"1000111001000111" &
"00000110101" & -- multiple IDCODEs are allowed
"1," &
"X001" &
"0000111001000111" &
"00000110101" & --
"1"; --
attribute INSTRUCTION_PRIVATE of PDP_11 : entity is "USER," & "PRIVATE";
attribute BOUNDARY_LENGTH of PDP_11 : entity is 18;
attribute BOUNDARY_REGISTER of PDP_11 : entity is
"0 (BC_2 , *, control, 1)," &
" 1 ( BC_7 , D(0), bidir , X , 0 , 1 , Z )," &
" 2 ( BC_2 , * , control , 1 )," &
" 3 ( BC_7 , D(1) , bidir , X , 2 , 1 , Z )," &
" 4 ( BC_2 , * , control , 1 )," &
" 5 ( BC_7 , D(2) , bidir , X , 4 , 1 , Z )," &
" 6 (BC_2, *, controlr, 1)," &
" 7 (BC_2, D(3), output3, X, 6, 1, PULL1)," & --
" 8 (BC_2, D(3), input, X)," & --
" 9 (BC_2, RESET_N, input, X)," &
" 10 (BC_4, CLK, OBSERVE_ONLY, X)," &
"11 (BC_2 , *, control, 1)," &
" 12 (BC_2, SCK, OUTPUT3, X, 11, 1, Z)," &
"13 (BC_2 , *, control, 1)," &
" 14 (BC_2, CSN, OUTPUT3, X, 13, 1, Z)," &
" 15 (BC_2, GT_TXP0, OUTPUT2, X)," &
" 16 (BC_4, GT_RXN0, OBSERVE_ONLY, X)," &
" 17 (BC_4, GT_RXP0, OBSERVE_ONLY, X)";
attribute AIO_COMPONENT_CONFORMANCE of PDP_11 : entity is "STD_1149_6_2003";
attribute DESIGN_WARNING of PDP_11 : entity is
"this part is fake.";
end PDP_11;