Initial commit
This commit is contained in:
@ -0,0 +1,479 @@
|
||||
LIBRARY Common_test;
|
||||
USE Common_test.testUtils.all;
|
||||
|
||||
ARCHITECTURE test OF ahbBeamer_tester IS
|
||||
-- reset and clock
|
||||
constant clockPeriod: time := (1.0/clockFrequency) * 1 sec;
|
||||
signal clock_int: std_uLogic := '1';
|
||||
signal reset_int: std_uLogic;
|
||||
-- test information
|
||||
signal testSeparator : string(1 to 80) := (others => '-');
|
||||
signal errorTopSeparator : string(1 to 80) := (others => '#');
|
||||
signal bottomSeparator : string(1 to 80) := (others => '.');
|
||||
signal indentation : string(1 to 2) := (others => ' ');
|
||||
signal noteInformation : string(1 to 9) := (others => ' ');
|
||||
signal errorInformation : string(1 to 10) := (others => ' ');
|
||||
signal failureInformation : string(1 to 12) := (others => ' ');
|
||||
signal testInformation : string(1 to 50) := (others => ' ');
|
||||
-- register definition
|
||||
constant controlRegisterAddress: natural := 0;
|
||||
constant controlRun: natural := 2#001#;
|
||||
constant controlUpdatePattern: natural := 2#010#;
|
||||
constant controlInterpolateLinear: natural := 2#100#;
|
||||
constant speedRegisterAddress: natural := 1;
|
||||
constant xFifoRegisterAddress: natural := 2;
|
||||
constant yFifoRegisterAddress: natural := 3;
|
||||
signal updatePeriod: natural := 1;
|
||||
signal patternLength: natural := 32;
|
||||
-- AMBA bus access
|
||||
constant registerWriteDelay: time := 4*clockPeriod;
|
||||
signal registerAddress: natural;
|
||||
signal registerDataOut, registerDataIn: integer;
|
||||
signal registerWrite: std_uLogic;
|
||||
signal registerRead: std_uLogic;
|
||||
-- UART access
|
||||
constant baudPeriodNb: positive := 4;
|
||||
signal uartData: integer;
|
||||
signal uartSend: std_uLogic;
|
||||
-- functions
|
||||
function clearBits (word, bits : natural) return natural is
|
||||
variable andMask: unsigned(hRData'range);
|
||||
begin
|
||||
andMask := not(to_unsigned(bits, hRData'length));
|
||||
return to_integer(to_unsigned(word, hRData'length) and andMask);
|
||||
end clearBits;
|
||||
|
||||
BEGIN
|
||||
------------------------------------------------------------------------------
|
||||
-- reset and clock
|
||||
reset_int <= '1', '0' after 2*clockPeriod;
|
||||
hReset_n <= not(reset_int);
|
||||
reset <= reset_int;
|
||||
|
||||
clock_int <= not clock_int after clockPeriod/2;
|
||||
hClk <= transport clock_int after clockPeriod*9.0/10.0;
|
||||
clock <= transport clock_int after clockPeriod*9.0/10.0;
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- test sequence
|
||||
testSequence: process
|
||||
begin
|
||||
selSinCos <= '0';
|
||||
registerAddress <= 0;
|
||||
registerDataOut <= 0;
|
||||
registerWrite <= '0';
|
||||
registerRead <= '0';
|
||||
uartSend <= '0';
|
||||
wait for 100 ns;
|
||||
print(cr & cr & cr & cr);
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- test control register
|
||||
wait for 1 us - now;
|
||||
testInformation <= pad("Testing control register", testInformation'length);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
-- set control register bits
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= controlRun + controlUpdatePattern + controlInterpolateLinear;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- readback control register
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerRead <= '1', '0' after clockPeriod;
|
||||
wait for 3*clockPeriod;
|
||||
assert(registerDataIn = controlRun + controlUpdatePattern + controlInterpolateLinear)
|
||||
report "Control register write / readback error"
|
||||
severity error;
|
||||
wait for registerWriteDelay;
|
||||
-- stop running and pattern update
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerRead <= '1', '0' after clockPeriod;
|
||||
wait for 3*clockPeriod;
|
||||
registerDataOut <= clearBits(registerDataIn, controlRun + controlUpdatePattern);
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- test speed register
|
||||
wait for 2 us - now;
|
||||
testInformation <= pad("Testing speed register", testInformation'length);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
-- set speed count value
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= speedRegisterAddress;
|
||||
registerDataOut <= updatePeriod;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- readback speed count
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= speedRegisterAddress;
|
||||
registerRead <= '1', '0' after clockPeriod;
|
||||
wait for 3*clockPeriod;
|
||||
assert(registerDataIn = updatePeriod)
|
||||
report "Speed register write / readback error"
|
||||
severity error;
|
||||
wait for registerWriteDelay;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- write sinewave data points to RAM
|
||||
wait for 3 us - now;
|
||||
testInformation <= pad("Writing sinewaves to RAM", testInformation'length);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
-- start pattern update
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= controlUpdatePattern;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- write X FIFO values
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= xFifoRegisterAddress;
|
||||
registerDataOut <= 16#0000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7FFF#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#0000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7FFF#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for 10*registerWriteDelay;
|
||||
-- write Y FIFO values
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= yFifoRegisterAddress;
|
||||
registerDataOut <= 16#7FFF#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#0000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7FFF#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#0000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#18F9#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#30FB#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#471C#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#5A82#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#6A6D#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7641#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7D89#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for 10*registerWriteDelay;
|
||||
-- end pattern update
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= 0;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- playing waveforms
|
||||
wait for 7 us - now;
|
||||
testInformation <= pad("Playing waveforms", testInformation'length);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
-- start run
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= controlRun + patternLength * 2**(hWData'length-patternAddressBitNb);
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- run for some time
|
||||
wait for 250 us - now;
|
||||
-- stop run
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= 0;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
-- play data points to RAM for overflow
|
||||
wait for 300 us - now;
|
||||
testInformation <= pad(
|
||||
"Writing waveform to RAM for overflow", testInformation'length
|
||||
);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
-- start pattern update
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= controlUpdatePattern;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- write X FIFO values
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= xFifoRegisterAddress;
|
||||
registerDataOut <= 16#4000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for 10*registerWriteDelay;
|
||||
-- write Y FIFO values
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= yFifoRegisterAddress;
|
||||
registerDataOut <= -16#4000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= 16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
registerDataOut <= -16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for 10*registerWriteDelay;
|
||||
-- end pattern update and start run
|
||||
patternLength <= 4;
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= controlRegisterAddress;
|
||||
registerDataOut <= controlRun + patternLength * 2**(hWData'length-patternAddressBitNb);
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
-- set lower speed execution
|
||||
updatePeriod <= 9;
|
||||
wait until rising_edge(clock_int);
|
||||
registerAddress <= speedRegisterAddress;
|
||||
registerDataOut <= updatePeriod;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for registerWriteDelay;
|
||||
----------------------------------------------------------------------------
|
||||
-- sin/cos debug mode
|
||||
wait for 700 us - now;
|
||||
testInformation <= pad("Drawing debug mode circle", testInformation'length);
|
||||
wait for 0 ns;
|
||||
print(testSeparator & cr & testInformation);
|
||||
selSinCos <= '1';
|
||||
----------------------------------------------------------------------------
|
||||
-- stop simulation
|
||||
wait for 1 ms - now;
|
||||
assert false
|
||||
report "End" & cr & " --> " &
|
||||
"End of simulation"
|
||||
severity failure;
|
||||
end process testSequence;
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- AMBA bus access
|
||||
busAccess: process
|
||||
variable writeAccess: boolean;
|
||||
variable hRData01: std_ulogic_vector(hRData'range);
|
||||
begin
|
||||
hAddr <= (others => '-');
|
||||
hWData <= (others => '-');
|
||||
hTrans <= transIdle;
|
||||
hSel <= '0';
|
||||
hWrite <= '0';
|
||||
wait on registerWrite, registerRead;
|
||||
writeAccess := false;
|
||||
if rising_edge(registerWrite) then
|
||||
writeAccess := true;
|
||||
end if;
|
||||
-- phase 1: address and controls
|
||||
wait until rising_edge(clock_int);
|
||||
hAddr <= to_unsigned(registerAddress, hAddr'length);
|
||||
hTrans <= transNonSeq;
|
||||
hSel <= '1';
|
||||
if writeAccess then
|
||||
hWrite <= '1';
|
||||
end if;
|
||||
-- phase 2: data
|
||||
wait until rising_edge(clock_int);
|
||||
hAddr <= (others => '-');
|
||||
hTrans <= transIdle;
|
||||
hSel <= '0';
|
||||
hWrite <= '0';
|
||||
if writeAccess then
|
||||
hWData <= std_uLogic_vector(to_signed(registerDataOut, hWData'length));
|
||||
else
|
||||
wait until falling_edge(clock_int);
|
||||
hRData01 := hRData;
|
||||
for index in hRData01'range loop
|
||||
if (hRData01(index) /= '0') and (hRData01(index) /= '1') then
|
||||
hRData01(index) := '0';
|
||||
end if;
|
||||
end loop;
|
||||
registerDataIn <= to_integer(unsigned(hRData01));
|
||||
end if;
|
||||
wait until rising_edge(clock_int);
|
||||
end process;
|
||||
|
||||
END ARCHITECTURE test;
|
@ -0,0 +1,294 @@
|
||||
ARCHITECTURE test OF beamerSoc_tester IS
|
||||
-- clock and reset
|
||||
constant clockPeriod: time := (1.0/clockFrequency) * 1 sec;
|
||||
signal sClock: std_uLogic := '1';
|
||||
signal sReset: std_uLogic := '1';
|
||||
-- register definition
|
||||
constant beamerBaseAddress: natural := 16#20#;
|
||||
constant beamerControlRegisterAddress: natural := beamerBaseAddress + 0;
|
||||
constant beamerControlRun: natural := 2#001#;
|
||||
constant beamerControlUpdatePattern: natural := 2#010#;
|
||||
constant beamerControlInterpolateLinear: natural := 2#100#;
|
||||
constant beamerControlsizeBase: natural := 16#80#;
|
||||
constant beamerSpeedRegisterAddress: natural := beamerBaseAddress + 1;
|
||||
constant beamerXFifoRegisterAddress: natural := beamerBaseAddress + 2;
|
||||
constant beamerYFifoRegisterAddress: natural := beamerBaseAddress + 3;
|
||||
-- microprocessor bus access
|
||||
constant registerWriteDelay: time := 4*clockPeriod;
|
||||
signal registerAddress: natural;
|
||||
signal registerDataOut, registerDataIn: integer;
|
||||
signal registerWrite, registerRead, registerDone: std_uLogic;
|
||||
-- UART access
|
||||
-- constant uartFrequency: real := 115200.0;
|
||||
constant uartDataBitNb: positive := 8;
|
||||
constant uartFrequency: real := 1.0E6;
|
||||
constant uartPeriod: time := (1.0/uartFrequency) * 1 sec;
|
||||
constant uartDataSpan: time := 10*uartPeriod;
|
||||
constant uartWriteReplySpan: time := 5*uartDataSpan;
|
||||
constant uartReadReplySpan: time := 10*uartDataSpan;
|
||||
signal uartRxData, uartTxData: integer;
|
||||
signal uartSend, uartDone: std_uLogic;
|
||||
signal uartTxShiftRegister: unsigned(2*uartDataBitNb-1 downto 0);
|
||||
signal uartTxDataWord: integer;
|
||||
|
||||
BEGIN
|
||||
------------------------------------------------------------------------------
|
||||
-- clock and reset
|
||||
sClock <= not sClock after clockPeriod/2;
|
||||
clock <= transport sClock after clockPeriod*9/10;
|
||||
|
||||
reset <= '1', '0' after 2*clockPeriod;
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- test sequence
|
||||
process
|
||||
begin
|
||||
io <= (others => 'Z');
|
||||
selSinCos <= '0';
|
||||
wait for 1 ns;
|
||||
assert false
|
||||
report cr & cr & cr & cr &
|
||||
"----------------------------------------" &
|
||||
"----------------------------------------" &
|
||||
"----------------------------------------"
|
||||
severity note;
|
||||
----------------------------------------------------------------------------
|
||||
-- initialization by microprocessor
|
||||
wait for 100 ns - now;
|
||||
assert false
|
||||
report "Init" & cr & " --> " &
|
||||
"Letting the microprocessor initialize the peripherals"
|
||||
severity note;
|
||||
----------------------------------------------------------------------------
|
||||
-- test GPIOs
|
||||
wait for 400 ns - now;
|
||||
assert false
|
||||
report "GPIOs" & cr & " --> " &
|
||||
"Testing the GPIOs"
|
||||
severity note;
|
||||
io(7 downto 4) <= x"5";
|
||||
wait for 1 ns;
|
||||
assert io = x"5A"
|
||||
report "GPIO error"
|
||||
severity error;
|
||||
----------------------------------------------------------------------------
|
||||
-- set speed count value
|
||||
wait for 3*uartPeriod - now;
|
||||
assert false
|
||||
report "Beamer init" & cr & " --> " &
|
||||
"Setting drawing speed"
|
||||
severity note;
|
||||
registerAddress <= beamerSpeedRegisterAddress;
|
||||
registerDataOut <= 2;
|
||||
--registerAddress <= 16#1234#;
|
||||
--registerDataOut <= 16#5678#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
----------------------------------------------------------------------------
|
||||
-- start updating pattern
|
||||
assert false
|
||||
report "Beamer init" & cr & " --> " &
|
||||
"Writing y-pattern to beamer RAM"
|
||||
severity note;
|
||||
registerAddress <= beamerControlRegisterAddress;
|
||||
registerDataOut <= beamerControlUpdatePattern;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
----------------------------------------------------------------------------
|
||||
-- write y-FIFO
|
||||
registerAddress <= beamerYFifoRegisterAddress;
|
||||
registerDataOut <= -16#4000# + 16#10000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
registerDataOut <= 16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
registerDataOut <= 16#7000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
registerDataOut <= -16#7000# + 16#10000#;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
----------------------------------------------------------------------------
|
||||
-- start run
|
||||
assert false
|
||||
report "Beamer play" & cr & " --> " &
|
||||
"Launching pattern drawing (setting pattern size and run flag)"
|
||||
severity note;
|
||||
registerAddress <= beamerControlRegisterAddress;
|
||||
registerDataOut <= beamerControlRun + beamerControlsizeBase * 4;
|
||||
registerWrite <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartWriteReplySpan;
|
||||
----------------------------------------------------------------------------
|
||||
-- readback control register
|
||||
assert false
|
||||
report "Beamer test" & cr & " --> " &
|
||||
"Reading back control register"
|
||||
severity note;
|
||||
registerAddress <= beamerControlRegisterAddress;
|
||||
registerRead <= '1', '0' after clockPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until registerDone = '1';
|
||||
wait for uartReadReplySpan;
|
||||
assert uartTxDataWord = beamerControlRun + beamerControlsizeBase * 4
|
||||
report "Beamer register readback error"
|
||||
severity error;
|
||||
----------------------------------------------------------------------------
|
||||
-- stop simulation
|
||||
wait for 1.5 ms - now;
|
||||
assert false
|
||||
report "End" & cr & " --> " &
|
||||
"End of simulation"
|
||||
severity failure;
|
||||
end process;
|
||||
|
||||
--============================================================================
|
||||
-- microprocessor bus access
|
||||
busAccess: process
|
||||
variable writeAccess: boolean;
|
||||
-- variable packetId: natural := 0;
|
||||
variable packetId: natural := 16#1D#;
|
||||
variable checksum: natural;
|
||||
begin
|
||||
registerDone <= '1';
|
||||
uartSend <= '0';
|
||||
uartRxData <= 16#AA#;
|
||||
wait on registerWrite, registerRead;
|
||||
registerDone <= '0';
|
||||
writeAccess := false;
|
||||
if registerWrite = '1' then
|
||||
writeAccess := true;
|
||||
end if;
|
||||
-- send header
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := uartRxData;
|
||||
-- send packet id
|
||||
uartRxData <= packetId;
|
||||
packetId := (packetId + 1) mod 2**8;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send command
|
||||
if writeAccess then
|
||||
uartRxData <= 16#03#;
|
||||
else
|
||||
uartRxData <= 16#04#;
|
||||
end if;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send data length
|
||||
if writeAccess then
|
||||
uartRxData <= 4;
|
||||
else
|
||||
uartRxData <= 2;
|
||||
end if;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send addresss low
|
||||
uartRxData <= registerAddress mod 2**8;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send addresss high
|
||||
uartRxData <= registerAddress / 2**8;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send data low
|
||||
if writeAccess then
|
||||
uartRxData <= registerDataOut mod 2**8;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
-- send data high
|
||||
uartRxData <= registerDataOut / 2**8;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
checksum := (checksum + uartRxData) mod 2**8;
|
||||
end if;
|
||||
-- send checksum
|
||||
uartRxData <= checksum;
|
||||
uartSend <= '1', '0' after uartPeriod;
|
||||
wait for uartPeriod;
|
||||
wait until uartDone = '1';
|
||||
end process;
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- UART access
|
||||
sendByte: process
|
||||
variable serialData: unsigned(7 downto 0);
|
||||
begin
|
||||
-- send stop bit
|
||||
uartDone <= '1';
|
||||
RxD <= '1';
|
||||
-- get new word
|
||||
wait until rising_edge(uartSend);
|
||||
uartDone <= '0';
|
||||
serialData := to_unsigned(uartRxData, serialData'length);
|
||||
-- send start bit
|
||||
RxD <= '0';
|
||||
wait for uartPeriod;
|
||||
-- send data bits
|
||||
for index in serialData'reverse_range loop
|
||||
RxD <= serialData(index);
|
||||
wait for uartPeriod;
|
||||
end loop;
|
||||
-- send stop bits
|
||||
RxD <= '1';
|
||||
wait for 4*uartPeriod;
|
||||
end process sendByte;
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- UART access
|
||||
receiveByte: process
|
||||
variable serialData: unsigned(uartDataBitNb-1 downto 0);
|
||||
begin
|
||||
-- wait for stat bit
|
||||
wait until falling_edge(TxD);
|
||||
-- jump to middle of first data bit
|
||||
wait for 1.5 * uartPeriod;
|
||||
-- read data bits
|
||||
for index in serialData'reverse_range loop
|
||||
if Is_X(TxD) then
|
||||
serialData(index) := '0';
|
||||
else
|
||||
serialData(index) := TxD;
|
||||
end if;
|
||||
wait for uartPeriod;
|
||||
end loop;
|
||||
-- write data to signal
|
||||
uartTxData <= to_integer(serialData);
|
||||
uartTxDataWord <= to_integer(uartTxShiftRegister);
|
||||
uartTxShiftRegister <= shift_right(uartTxShiftRegister, serialData'length);
|
||||
uartTxShiftRegister(
|
||||
uartTxShiftRegister'high downto
|
||||
uartTxShiftRegister'high-serialData'length+1
|
||||
) <= serialData;
|
||||
end process receiveByte;
|
||||
|
||||
END ARCHITECTURE test;
|
@ -0,0 +1,9 @@
|
||||
LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.all;
|
||||
USE ieee.numeric_std.all;
|
||||
|
||||
PACKAGE beamerTest_pck IS
|
||||
|
||||
function trim_X (arg : signed) return signed;
|
||||
|
||||
END beamerTest_pck;
|
@ -0,0 +1,16 @@
|
||||
PACKAGE BODY beamerTest_pck IS
|
||||
|
||||
function trim_X (arg : signed) return signed is
|
||||
variable returnVal : signed(arg'range);
|
||||
begin
|
||||
for i in arg'range loop
|
||||
case arg(i) is
|
||||
when '0' | 'L' => returnVal(i) := '0';
|
||||
when '1' | 'H' => returnVal(i) := '1';
|
||||
when others => returnVal(i) := '0';
|
||||
end case;
|
||||
end loop;
|
||||
return returnVal;
|
||||
end trim_X;
|
||||
|
||||
END beamerTest_pck;
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_93
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_93
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1 @@
|
||||
DIALECT atom VHDL_2008
|
@ -0,0 +1,3 @@
|
||||
DEFAULT_FILE atom ahb@beamer_tb/struct.bd
|
||||
DEFAULT_ARCHITECTURE atom struct
|
||||
TOP_MARKER atom 1
|
@ -0,0 +1,2 @@
|
||||
DEFAULT_ARCHITECTURE atom test
|
||||
DEFAULT_FILE atom ahbBeamer_tester_test.vhd
|
@ -0,0 +1,2 @@
|
||||
DEFAULT_ARCHITECTURE atom struct
|
||||
DEFAULT_FILE atom beamer@periph@blanking_tb/struct.bd
|
@ -0,0 +1,3 @@
|
||||
DEFAULT_FILE atom beamer@soc_tb/struct.bd
|
||||
DEFAULT_ARCHITECTURE atom struct
|
||||
TOP_MARKER atom 1
|
@ -0,0 +1,2 @@
|
||||
DEFAULT_FILE atom beamerSoc_tester_test.vhd
|
||||
DEFAULT_ARCHITECTURE atom test
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,988 @@
|
||||
DocumentHdrVersion "1.1"
|
||||
Header (DocumentHdr
|
||||
packageRefs [
|
||||
(PackageRef
|
||||
library "ieee"
|
||||
unitName "std_logic_1164"
|
||||
itemName "all"
|
||||
)
|
||||
(PackageRef
|
||||
library "ieee"
|
||||
unitName "numeric_std"
|
||||
itemName "all"
|
||||
)
|
||||
]
|
||||
)
|
||||
version "15.1"
|
||||
appVersion "2002.1a (Build 22)"
|
||||
model (Symbol
|
||||
VExpander (VariableExpander
|
||||
vvMap [
|
||||
(vvPair
|
||||
variable " "
|
||||
value " "
|
||||
)
|
||||
(vvPair
|
||||
variable "HDLDir"
|
||||
value "D:\\Users\\ELN_labs\\VHDL_gen"
|
||||
)
|
||||
(vvPair
|
||||
variable "SideDataDesignDir"
|
||||
value "U:\\SEm_curves\\Test\\waveform@gen_tester\\interface.info"
|
||||
)
|
||||
(vvPair
|
||||
variable "SideDataUserDir"
|
||||
value "U:\\SEm_curves\\Test\\waveform@gen_tester\\interface.user"
|
||||
)
|
||||
(vvPair
|
||||
variable "SourceDir"
|
||||
value "U:\\SEm_curves\\Test"
|
||||
)
|
||||
(vvPair
|
||||
variable "appl"
|
||||
value "HDL Designer - Pro"
|
||||
)
|
||||
(vvPair
|
||||
variable "d"
|
||||
value "U:\\SEm_curves\\Test\\waveform@gen_tester"
|
||||
)
|
||||
(vvPair
|
||||
variable "d_logical"
|
||||
value "U:\\SEm_curves\\Test\\waveformGen_tester"
|
||||
)
|
||||
(vvPair
|
||||
variable "date"
|
||||
value "06/09/08"
|
||||
)
|
||||
(vvPair
|
||||
variable "day"
|
||||
value "Mon"
|
||||
)
|
||||
(vvPair
|
||||
variable "day_long"
|
||||
value "Monday"
|
||||
)
|
||||
(vvPair
|
||||
variable "dd"
|
||||
value "09"
|
||||
)
|
||||
(vvPair
|
||||
variable "ext"
|
||||
value "<TBD>"
|
||||
)
|
||||
(vvPair
|
||||
variable "f"
|
||||
value "interface"
|
||||
)
|
||||
(vvPair
|
||||
variable "f_logical"
|
||||
value "interface"
|
||||
)
|
||||
(vvPair
|
||||
variable "group"
|
||||
value "UNKNOWN"
|
||||
)
|
||||
(vvPair
|
||||
variable "host"
|
||||
value "WE1647"
|
||||
)
|
||||
(vvPair
|
||||
variable "library"
|
||||
value "Curves_test"
|
||||
)
|
||||
(vvPair
|
||||
variable "library_downstream_ModelSim"
|
||||
value "D:\\Users\\ELN_labs\\VHDL_comp"
|
||||
)
|
||||
(vvPair
|
||||
variable "mm"
|
||||
value "06"
|
||||
)
|
||||
(vvPair
|
||||
variable "month"
|
||||
value "Jun"
|
||||
)
|
||||
(vvPair
|
||||
variable "month_long"
|
||||
value "June"
|
||||
)
|
||||
(vvPair
|
||||
variable "p"
|
||||
value "U:\\SEm_curves\\Test\\waveform@gen_tester\\interface"
|
||||
)
|
||||
(vvPair
|
||||
variable "p_logical"
|
||||
value "U:\\SEm_curves\\Test\\waveformGen_tester\\interface"
|
||||
)
|
||||
(vvPair
|
||||
variable "series"
|
||||
value "HDL Designer Series"
|
||||
)
|
||||
(vvPair
|
||||
variable "time"
|
||||
value "17:30:05"
|
||||
)
|
||||
(vvPair
|
||||
variable "unit"
|
||||
value "waveformGen_tester"
|
||||
)
|
||||
(vvPair
|
||||
variable "user"
|
||||
value "cof"
|
||||
)
|
||||
(vvPair
|
||||
variable "version"
|
||||
value "2002.1a (Build 22)"
|
||||
)
|
||||
(vvPair
|
||||
variable "view"
|
||||
value "interface"
|
||||
)
|
||||
(vvPair
|
||||
variable "year"
|
||||
value "2008"
|
||||
)
|
||||
(vvPair
|
||||
variable "yy"
|
||||
value "08"
|
||||
)
|
||||
]
|
||||
)
|
||||
uid 66,0
|
||||
optionalChildren [
|
||||
*1 (SymbolBody
|
||||
uid 8,0
|
||||
optionalChildren [
|
||||
*2 (CptPort
|
||||
uid 107,0
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Triangle
|
||||
uid 108,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
)
|
||||
xt "28625,5250,29375,6000"
|
||||
)
|
||||
n "clock"
|
||||
t "std_ulogic"
|
||||
m 1
|
||||
o 3
|
||||
r 1
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
uid 109,0
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "RightVerticalLayoutStrategy"
|
||||
f (Text
|
||||
uid 110,0
|
||||
ro 270
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "28400,7000,29600,9700"
|
||||
st "clock"
|
||||
ju 2
|
||||
blo "29400,7000"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
uid 111,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "44000,2000,59500,2800"
|
||||
st "clock : OUT std_ulogic ;
|
||||
"
|
||||
)
|
||||
)
|
||||
*3 (CptPort
|
||||
uid 112,0
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Triangle
|
||||
uid 113,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
)
|
||||
xt "26625,5250,27375,6000"
|
||||
)
|
||||
n "en"
|
||||
t "std_ulogic"
|
||||
m 1
|
||||
o 4
|
||||
r 2
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
uid 114,0
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "RightVerticalLayoutStrategy"
|
||||
f (Text
|
||||
uid 115,0
|
||||
ro 270
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "26400,7000,27600,8200"
|
||||
st "en"
|
||||
ju 2
|
||||
blo "27400,7000"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
uid 116,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "44000,2800,59500,3600"
|
||||
st "en : OUT std_ulogic ;
|
||||
"
|
||||
)
|
||||
)
|
||||
*4 (CptPort
|
||||
uid 117,0
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Triangle
|
||||
uid 118,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
)
|
||||
xt "30625,5250,31375,6000"
|
||||
)
|
||||
n "reset"
|
||||
t "std_ulogic"
|
||||
m 1
|
||||
o 2
|
||||
r 3
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
uid 119,0
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "RightVerticalLayoutStrategy"
|
||||
f (Text
|
||||
uid 120,0
|
||||
ro 270
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "30400,7000,31600,9600"
|
||||
st "reset"
|
||||
ju 2
|
||||
blo "31400,7000"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
uid 121,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "44000,3600,59500,4400"
|
||||
st "reset : OUT std_ulogic ;
|
||||
"
|
||||
)
|
||||
)
|
||||
*5 (CptPort
|
||||
uid 122,0
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Triangle
|
||||
uid 123,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
)
|
||||
xt "22625,5250,23375,6000"
|
||||
)
|
||||
n "step"
|
||||
t "unsigned"
|
||||
b "(bitNb-1 DOWNTO 0)"
|
||||
m 1
|
||||
o 3
|
||||
r 4
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
uid 124,0
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "RightVerticalLayoutStrategy"
|
||||
f (Text
|
||||
uid 125,0
|
||||
ro 270
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "22400,7000,23600,17400"
|
||||
st "step : (bitNb-1:0)"
|
||||
ju 2
|
||||
blo "23400,7000"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
uid 126,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "44000,4400,67000,5200"
|
||||
st "step : OUT unsigned (bitNb-1 DOWNTO 0)
|
||||
"
|
||||
)
|
||||
)
|
||||
]
|
||||
shape (Rectangle
|
||||
uid 9,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
lineColor "0,32896,0"
|
||||
lineWidth 2
|
||||
)
|
||||
xt "15000,6000,67000,14000"
|
||||
)
|
||||
oxt "15000,6000,66000,14000"
|
||||
biTextGroup (BiTextGroup
|
||||
uid 10,0
|
||||
ps "CenterOffsetStrategy"
|
||||
stg "VerticalLayoutStrategy"
|
||||
first (Text
|
||||
uid 11,0
|
||||
va (VaSet
|
||||
font "Verdana,9,1"
|
||||
)
|
||||
xt "35050,8800,42250,10000"
|
||||
st "Curves_test"
|
||||
blo "35050,9800"
|
||||
)
|
||||
second (Text
|
||||
uid 12,0
|
||||
va (VaSet
|
||||
font "Verdana,9,1"
|
||||
)
|
||||
xt "35050,10000,46950,11200"
|
||||
st "waveformGen_tester"
|
||||
blo "35050,11000"
|
||||
)
|
||||
)
|
||||
gi *6 (GenericInterface
|
||||
uid 13,0
|
||||
ps "CenterOffsetStrategy"
|
||||
matrix (Matrix
|
||||
uid 14,0
|
||||
text (MLText
|
||||
uid 15,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "16000,6000,27500,8400"
|
||||
st "Generic Declarations
|
||||
|
||||
bitNb positive 16
|
||||
"
|
||||
)
|
||||
header "Generic Declarations"
|
||||
)
|
||||
elements [
|
||||
(GiElement
|
||||
name "bitNb"
|
||||
type "positive"
|
||||
value "16"
|
||||
)
|
||||
]
|
||||
)
|
||||
portInstanceVisAsIs 1
|
||||
portInstanceVis (PortSigDisplay
|
||||
)
|
||||
)
|
||||
*7 (Grouping
|
||||
uid 16,0
|
||||
optionalChildren [
|
||||
*8 (CommentText
|
||||
uid 18,0
|
||||
shape (Rectangle
|
||||
uid 19,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "36000,48000,53000,49000"
|
||||
)
|
||||
oxt "18000,70000,35000,71000"
|
||||
text (MLText
|
||||
uid 20,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "36200,48000,45500,49000"
|
||||
st "
|
||||
by %user on %dd %month %year"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 17000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*9 (CommentText
|
||||
uid 21,0
|
||||
shape (Rectangle
|
||||
uid 22,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "53000,44000,57000,45000"
|
||||
)
|
||||
oxt "35000,66000,39000,67000"
|
||||
text (MLText
|
||||
uid 23,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "53200,44000,55800,45000"
|
||||
st "
|
||||
Project:"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 4000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*10 (CommentText
|
||||
uid 24,0
|
||||
shape (Rectangle
|
||||
uid 25,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "36000,46000,53000,47000"
|
||||
)
|
||||
oxt "18000,68000,35000,69000"
|
||||
text (MLText
|
||||
uid 26,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "36200,46000,46200,47000"
|
||||
st "
|
||||
<enter diagram title here>"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 17000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*11 (CommentText
|
||||
uid 27,0
|
||||
shape (Rectangle
|
||||
uid 28,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "32000,46000,36000,47000"
|
||||
)
|
||||
oxt "14000,68000,18000,69000"
|
||||
text (MLText
|
||||
uid 29,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "32200,46000,33900,47000"
|
||||
st "
|
||||
Title:"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 4000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*12 (CommentText
|
||||
uid 30,0
|
||||
shape (Rectangle
|
||||
uid 31,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "53000,45000,73000,49000"
|
||||
)
|
||||
oxt "35000,67000,55000,71000"
|
||||
text (MLText
|
||||
uid 32,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "53200,45200,62400,46200"
|
||||
st "
|
||||
<enter comments here>"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 4000
|
||||
visibleWidth 20000
|
||||
)
|
||||
ignorePrefs 1
|
||||
)
|
||||
*13 (CommentText
|
||||
uid 33,0
|
||||
shape (Rectangle
|
||||
uid 34,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "57000,44000,73000,45000"
|
||||
)
|
||||
oxt "39000,66000,55000,67000"
|
||||
text (MLText
|
||||
uid 35,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "57200,44000,67300,45000"
|
||||
st "
|
||||
<enter project name here>"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 16000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*14 (CommentText
|
||||
uid 36,0
|
||||
shape (Rectangle
|
||||
uid 37,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "32000,44000,53000,46000"
|
||||
)
|
||||
oxt "14000,66000,35000,68000"
|
||||
text (MLText
|
||||
uid 38,0
|
||||
va (VaSet
|
||||
fg "32768,0,0"
|
||||
)
|
||||
xt "39150,44500,45850,45500"
|
||||
st "
|
||||
<company name>"
|
||||
ju 0
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 2000
|
||||
visibleWidth 21000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*15 (CommentText
|
||||
uid 39,0
|
||||
shape (Rectangle
|
||||
uid 40,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "32000,47000,36000,48000"
|
||||
)
|
||||
oxt "14000,69000,18000,70000"
|
||||
text (MLText
|
||||
uid 41,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "32200,47000,33900,48000"
|
||||
st "
|
||||
Path:"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 4000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*16 (CommentText
|
||||
uid 42,0
|
||||
shape (Rectangle
|
||||
uid 43,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "32000,48000,36000,49000"
|
||||
)
|
||||
oxt "14000,70000,18000,71000"
|
||||
text (MLText
|
||||
uid 44,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "32200,48000,34500,49000"
|
||||
st "
|
||||
Edited:"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 4000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
*17 (CommentText
|
||||
uid 45,0
|
||||
shape (Rectangle
|
||||
uid 46,0
|
||||
sl 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
)
|
||||
xt "36000,47000,53000,48000"
|
||||
)
|
||||
oxt "18000,69000,35000,70000"
|
||||
text (MLText
|
||||
uid 47,0
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
bg "0,0,32768"
|
||||
)
|
||||
xt "36200,47000,51900,48000"
|
||||
st "
|
||||
%library/%unit/%view"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 1000
|
||||
visibleWidth 17000
|
||||
)
|
||||
position 1
|
||||
ignorePrefs 1
|
||||
)
|
||||
]
|
||||
shape (GroupingShape
|
||||
uid 17,0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65535,65535,65535"
|
||||
lineStyle 2
|
||||
lineWidth 2
|
||||
)
|
||||
xt "32000,44000,73000,49000"
|
||||
)
|
||||
oxt "14000,66000,55000,71000"
|
||||
)
|
||||
]
|
||||
LanguageMgr "VhdlLangMgr"
|
||||
bg "65535,65535,65535"
|
||||
grid (Grid
|
||||
origin "0,0"
|
||||
isVisible 1
|
||||
isActive 1
|
||||
xSpacing 1000
|
||||
xySpacing 1000
|
||||
xShown 1
|
||||
yShown 1
|
||||
color "26368,26368,26368"
|
||||
)
|
||||
packageList *18 (PackageList
|
||||
uid 48,0
|
||||
stg "VerticalLayoutStrategy"
|
||||
textVec [
|
||||
*19 (Text
|
||||
uid 49,0
|
||||
va (VaSet
|
||||
font "arial,8,1"
|
||||
)
|
||||
xt "0,0,5400,1000"
|
||||
st "Package List"
|
||||
blo "0,800"
|
||||
)
|
||||
*20 (MLText
|
||||
uid 50,0
|
||||
va (VaSet
|
||||
)
|
||||
xt "0,1000,11300,4000"
|
||||
st "LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.all;
|
||||
USE ieee.numeric_std.ALL;"
|
||||
tm "PackageList"
|
||||
)
|
||||
]
|
||||
)
|
||||
windowSize "0,0,895,750"
|
||||
viewArea "0,0,0,0"
|
||||
cachedDiagramExtent "0,0,0,0"
|
||||
pageBreakOrigin "0,0"
|
||||
defaultCommentText (CommentText
|
||||
shape (Rectangle
|
||||
layer 0
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65280,65280,46080"
|
||||
lineColor "0,0,32768"
|
||||
)
|
||||
xt "0,0,15000,5000"
|
||||
)
|
||||
text (MLText
|
||||
va (VaSet
|
||||
fg "0,0,32768"
|
||||
font "Courier New,9,0"
|
||||
)
|
||||
xt "200,200,2200,1400"
|
||||
st "
|
||||
Text"
|
||||
tm "CommentText"
|
||||
wrapOption 3
|
||||
visibleHeight 4600
|
||||
visibleWidth 14600
|
||||
)
|
||||
)
|
||||
defaultPanel (Panel
|
||||
shape (RectFrame
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65535,65535,65535"
|
||||
lineColor "32768,0,0"
|
||||
lineWidth 2
|
||||
)
|
||||
xt "0,0,20000,20000"
|
||||
)
|
||||
title (TextAssociate
|
||||
ps "TopLeftStrategy"
|
||||
text (Text
|
||||
va (VaSet
|
||||
font "Verdana,9,1"
|
||||
)
|
||||
xt "1000,1000,4400,2200"
|
||||
st "Panel0"
|
||||
blo "1000,2000"
|
||||
tm "PanelText"
|
||||
)
|
||||
)
|
||||
)
|
||||
parentViewRef (DesignUnitViewRef
|
||||
libraryName "Curves_test"
|
||||
duName "waveformGen_tb"
|
||||
viewName "struct.bd"
|
||||
)
|
||||
defaultSymbolBody (SymbolBody
|
||||
shape (Rectangle
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
lineColor "0,32896,0"
|
||||
lineWidth 2
|
||||
)
|
||||
xt "15000,6000,35000,26000"
|
||||
)
|
||||
biTextGroup (BiTextGroup
|
||||
ps "CenterOffsetStrategy"
|
||||
stg "VerticalLayoutStrategy"
|
||||
first (Text
|
||||
va (VaSet
|
||||
font "Verdana,9,1"
|
||||
)
|
||||
xt "22600,14800,27400,16000"
|
||||
st "<library>"
|
||||
blo "22600,15800"
|
||||
)
|
||||
second (Text
|
||||
va (VaSet
|
||||
font "Verdana,9,1"
|
||||
)
|
||||
xt "22600,16000,25900,17200"
|
||||
st "<cell>"
|
||||
blo "22600,17000"
|
||||
)
|
||||
)
|
||||
gi *21 (GenericInterface
|
||||
ps "CenterOffsetStrategy"
|
||||
matrix (Matrix
|
||||
text (MLText
|
||||
va (VaSet
|
||||
isHidden 1
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "0,12000,0,12000"
|
||||
)
|
||||
header "Generic Declarations"
|
||||
)
|
||||
elements [
|
||||
]
|
||||
)
|
||||
portInstanceVisAsIs 1
|
||||
portInstanceVis (PortSigDisplay
|
||||
)
|
||||
)
|
||||
defaultCptPort (CptPort
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Triangle
|
||||
ro 90
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "0,65535,0"
|
||||
)
|
||||
xt "0,0,750,750"
|
||||
)
|
||||
n "In0"
|
||||
t "std_logic_vector"
|
||||
b "(15 DOWNTO 0)"
|
||||
o 0
|
||||
r 0
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "VerticalLayoutStrategy"
|
||||
f (Text
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "0,750,1800,1950"
|
||||
st "In0"
|
||||
blo "0,1750"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
)
|
||||
)
|
||||
defaultCptPortBuffer (CptPort
|
||||
ps "OnEdgeStrategy"
|
||||
shape (Diamond
|
||||
va (VaSet
|
||||
vasetType 1
|
||||
fg "65535,65535,65535"
|
||||
bg "0,0,0"
|
||||
)
|
||||
xt "0,0,750,750"
|
||||
)
|
||||
n "Buffer0"
|
||||
t "std_logic_vector"
|
||||
b "(15 DOWNTO 0)"
|
||||
m 3
|
||||
o 0
|
||||
r 0
|
||||
d 0
|
||||
s 0
|
||||
sf 1
|
||||
tg (CPTG
|
||||
ps "CptPortTextPlaceStrategy"
|
||||
stg "VerticalLayoutStrategy"
|
||||
f (Text
|
||||
va (VaSet
|
||||
font "Verdana,9,0"
|
||||
)
|
||||
xt "0,750,3600,1950"
|
||||
st "Buffer0"
|
||||
blo "0,1750"
|
||||
tm "CptPortNameMgr"
|
||||
)
|
||||
)
|
||||
dt (MLText
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
)
|
||||
)
|
||||
DeclarativeBlock *22 (SymDeclBlock
|
||||
uid 1,0
|
||||
stg "SymDeclLayoutStrategy"
|
||||
declLabel (Text
|
||||
uid 2,0
|
||||
va (VaSet
|
||||
font "Arial,8,1"
|
||||
)
|
||||
xt "42000,0,47400,1000"
|
||||
st "Declarations"
|
||||
blo "42000,800"
|
||||
)
|
||||
portLabel (Text
|
||||
uid 3,0
|
||||
va (VaSet
|
||||
font "Arial,8,1"
|
||||
)
|
||||
xt "42000,1000,44300,2000"
|
||||
st "Ports:"
|
||||
blo "42000,1800"
|
||||
)
|
||||
externalLabel (Text
|
||||
uid 4,0
|
||||
va (VaSet
|
||||
font "Arial,8,1"
|
||||
)
|
||||
xt "42000,5200,44000,6200"
|
||||
st "User:"
|
||||
blo "42000,6000"
|
||||
)
|
||||
internalLabel (Text
|
||||
uid 6,0
|
||||
va (VaSet
|
||||
isHidden 1
|
||||
font "Arial,8,1"
|
||||
)
|
||||
xt "42000,0,47800,1000"
|
||||
st "Internal User:"
|
||||
blo "42000,800"
|
||||
)
|
||||
externalText (MLText
|
||||
uid 5,0
|
||||
va (VaSet
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "44000,6200,44000,6200"
|
||||
tm "SyDeclarativeTextMgr"
|
||||
)
|
||||
internalText (MLText
|
||||
uid 7,0
|
||||
va (VaSet
|
||||
isHidden 1
|
||||
font "Courier New,8,0"
|
||||
)
|
||||
xt "42000,0,42000,0"
|
||||
tm "SyDeclarativeTextMgr"
|
||||
)
|
||||
)
|
||||
lastUid 126,0
|
||||
)
|
Reference in New Issue
Block a user