?? testsupport.vhd
字號:
setup.EN_CALL := 0 ;
setup.EN_ACM := 0 ;
setup.EN_DATAM := 2 ;
setup.EN_INT := 0;
setup.EN_PUSH := 0 ;
setup.ISRADDR := 0;
when 3 => --Build: Small 32 bit
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 32 ;
setup.APB_SDEPTH := 1;
setup.ICWIDTH := 5;
setup.ZRWIDTH := 0;
setup.IIWIDTH := 4;
setup.IOWIDTH := 8;
setup.STWIDTH := 1;
setup.EN_RAM := 0;
setup.EN_AND := 1;
setup.EN_XOR := 1;
setup.EN_OR := 0;
setup.EN_ADD := 1;
setup.EN_INC := 0;
setup.EN_SHL := 0;
setup.EN_SHR := 0;
setup.EN_CALL := 0;
setup.EN_ACM := 0;
setup.EN_DATAM := 2;
setup.EN_PUSH := 0 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 4 => --Build: Complete 8 bit
setup.APB_AWIDTH := 8 ;
setup.APB_DWIDTH := 8 ;
setup.APB_SDEPTH := 1 ;
setup.ICWIDTH := 5 ;
setup.ZRWIDTH := 8 ;
setup.IIWIDTH := 4 ;
setup.IOWIDTH := 8 ;
setup.STWIDTH := 1 ;
setup.EN_RAM := 1 ;
setup.EN_AND := 1 ;
setup.EN_XOR := 1 ;
setup.EN_OR := 1 ;
setup.EN_ADD := 1 ;
setup.EN_INC := 1 ;
setup.EN_SHL := 1 ;
setup.EN_SHR := 1 ;
setup.EN_CALL := 1 ;
setup.EN_ACM := 0 ;
setup.EN_DATAM := 2 ;
setup.EN_PUSH := 0 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 5 => --Build: Complete 16 bit
setup.APB_AWIDTH := 8 ;
setup.APB_DWIDTH := 16 ;
setup.APB_SDEPTH := 1 ;
setup.ICWIDTH := 5 ;
setup.ZRWIDTH := 8 ;
setup.IIWIDTH := 4 ;
setup.IOWIDTH := 8 ;
setup.STWIDTH := 1 ;
setup.EN_RAM := 1 ;
setup.EN_AND := 1 ;
setup.EN_XOR := 1 ;
setup.EN_OR := 1 ;
setup.EN_ADD := 1 ;
setup.EN_INC := 1 ;
setup.EN_SHL := 1 ;
setup.EN_SHR := 1 ;
setup.EN_CALL := 1 ;
setup.EN_ACM := 0 ;
setup.EN_DATAM := 2 ;
setup.EN_PUSH := 0 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 6 => --Build: Complete 32 bit
setup.APB_AWIDTH := 8 ;
setup.APB_DWIDTH := 32 ;
setup.APB_SDEPTH := 1 ;
setup.ICWIDTH := 5 ;
setup.ZRWIDTH := 8 ;
setup.IIWIDTH := 4 ;
setup.IOWIDTH := 8 ;
setup.STWIDTH := 1 ;
setup.EN_RAM := 1 ;
setup.EN_AND := 1 ;
setup.EN_XOR := 1 ;
setup.EN_OR := 1 ;
setup.EN_ADD := 1 ;
setup.EN_INC := 1 ;
setup.EN_SHL := 1 ;
setup.EN_SHR := 1 ;
setup.EN_CALL := 1 ;
setup.EN_ACM := 0 ;
setup.EN_DATAM := 2 ;
setup.EN_PUSH := 0 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 11 => -- Fully Configured 8 Bit Configuration with v2.2 instructions
setup.APB_AWIDTH := 10;
setup.APB_DWIDTH := 8;
setup.APB_SDEPTH := 4;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 8;
setup.IOWIDTH := 8;
setup.EN_CALL := 1;
setup.EN_INC := 1;
setup.EN_ADD := 1;
setup.EN_AND := 1;
setup.EN_OR := 1;
setup.EN_XOR := 1;
setup.EN_SHL := 1;
setup.EN_SHR := 1;
setup.EN_DATAM := 2;
setup.EN_RAM := 1;
setup.EN_ACM := 1;
setup.EN_PUSH := 1;
setup.EN_INT := 1;
setup.ISRADDR := 400;
setup.ICWIDTH := 10;
setup.STWIDTH := 4;
setup.EN_IOREAD := 1;
setup.EN_ALURAM := 1;
setup.EN_MULT := 2;
setup.EN_INDIRECT := 1;
when 12 => -- Fully Configured 16 Bit Configuration
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 16;
setup.APB_SDEPTH := 4;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 4;
setup.IOWIDTH := 8;
setup.EN_CALL := 1;
setup.EN_INC := 1;
setup.EN_ADD := 1;
setup.EN_AND := 1;
setup.EN_OR := 1;
setup.EN_XOR := 1;
setup.EN_SHL := 1;
setup.EN_SHR := 1;
setup.EN_DATAM := 2;
setup.EN_RAM := 1;
setup.EN_ACM := 1;
setup.ICWIDTH := 8;
setup.STWIDTH := 4;
setup.EN_PUSH := 1 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 13 => -- Fully Configured 32 Bit Configuration
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 32;
setup.APB_SDEPTH := 4;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 4;
setup.EN_CALL := 1;
setup.EN_INC := 1;
setup.EN_ADD := 1;
setup.EN_AND := 1;
setup.EN_OR := 1;
setup.EN_XOR := 1;
setup.EN_SHL := 1;
setup.EN_SHR := 1;
setup.EN_DATAM := 2;
setup.EN_RAM := 1;
setup.EN_ACM := 1;
setup.ICWIDTH := 8;
setup.STWIDTH := 4;
setup.EN_PUSH := 1;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 14 => -- Small 8 Bit Configuration with call
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 8;
setup.APB_SDEPTH := 4;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 4;
setup.IOWIDTH := 8;
setup.EN_CALL := 1;
setup.EN_INC := 0;
setup.EN_AND := 1;
setup.EN_OR := 1;
setup.EN_XOR := 1;
setup.EN_SHL := 0;
setup.EN_SHR := 0;
setup.EN_DATAM := 1;
setup.EN_RAM := 0;
setup.EN_ACM := 0;
setup.ICWIDTH := 8;
setup.STWIDTH := 4;
setup.EN_PUSH := 1 ;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 15 => -- Small 8 Bit Configuration no call and 1 slot
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 8;
setup.APB_SDEPTH := 1;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 4;
setup.IOWIDTH := 8;
setup.EN_CALL := 0;
setup.EN_INC := 1;
setup.EN_ADD := 0;
setup.EN_AND := 0;
setup.EN_OR := 0;
setup.EN_XOR := 1;
setup.EN_SHL := 0;
setup.EN_SHR := 0;
setup.EN_DATAM := 3;
setup.EN_RAM := 0;
setup.EN_ACM := 0;
setup.ICWIDTH := 8;
setup.STWIDTH := 1;
setup.EN_PUSH := 0;
setup.EN_INT := 0;
setup.ISRADDR := 0;
when 16 => -- Full 8 bit configuration with RAM based Instructions
setup.APB_AWIDTH := 8;
setup.APB_DWIDTH := 8;
setup.APB_SDEPTH := 4;
setup.ZRWIDTH := 8;
setup.IIWIDTH := 4;
setup.IOWIDTH := 8;
setup.EN_CALL := 1;
setup.EN_INC := 1;
setup.EN_ADD := 1;
setup.EN_AND := 1;
setup.EN_OR := 1;
setup.EN_XOR := 1;
setup.EN_SHL := 1;
setup.EN_SHR := 1;
setup.EN_DATAM := 2;
setup.EN_RAM := 1;
setup.EN_ACM := 1;
setup.ICWIDTH := 8;
setup.STWIDTH := 4;
setup.EN_PUSH := 1;
setup.INITWIDTH := 2;
setup.EN_INT := 0;
setup.ISRADDR := 0;
-- These test core with various generics effecting main widths
when 20 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH := 8; setup.APB_SDEPTH := 16; setup.ICWIDTH := 12;
when 21 => setup.APB_AWIDTH := 8; setup.APB_DWIDTH := 8; setup.APB_SDEPTH := 1; setup.ICWIDTH := 8;
when 22 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=32; setup.APB_SDEPTH := 16; setup.ICWIDTH := 12;
when 23 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=16; setup.APB_SDEPTH := 1 ; setup.ICWIDTH := 7;
when 24 => setup.APB_AWIDTH := 8; setup.APB_DWIDTH :=16; setup.APB_SDEPTH := 1; setup.ICWIDTH := 8;
when 25 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=32; setup.APB_SDEPTH := 16; setup.ICWIDTH := 12;
when 26 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=16; setup.APB_SDEPTH := 16; setup.ICWIDTH := 12;
when 27 => setup.APB_AWIDTH := 10; setup.APB_DWIDTH :=32; setup.APB_SDEPTH := 1; setup.ICWIDTH := 10;
when 28 => setup.APB_AWIDTH := 9; setup.APB_DWIDTH :=16; setup.APB_SDEPTH := 1; setup.ICWIDTH := 8;
when 29 => setup.APB_AWIDTH := 8; setup.APB_DWIDTH := 8; setup.APB_SDEPTH := 1; setup.ICWIDTH := 7;
when 30 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=32; setup.APB_SDEPTH := 16; setup.ICWIDTH := 15;
when 31 => setup.APB_AWIDTH := 16; setup.APB_DWIDTH :=8 ; setup.APB_SDEPTH := 2 ; setup.ICWIDTH := 16; -- 32 bit instruction
when others => assert FALSE
report "Testbench not configured for the TESTMODE setting used"
severity failure;
end case;
setup.INITWIDTH := calc_initwidth(setup.APB_AWIDTH,setup.APB_DWIDTH,setup.APB_SDEPTH,setup.ICWIDTH);
return(setup);
end APBsetup;
function tostr( x : integer) return string is
begin
if x=0 then return("Disabled");
else return("Enabled");
end if;
end tostr;
procedure printerror ( ERRORS : inout integer; str : string) is
begin
ERRORS := ERRORS + 1;
printf("ERROR: %s",fmt(str));
assert FALSE
report " Simulation stopped due to error"
severity ERROR;
end printerror;
procedure checksetup (su : TABCCONFIG) is
variable ERR : BOOLEAN;
begin
ERR := FALSE;
if su.IIWIDTH > su.APB_DWIDTH then
printf("ERROR:IO IN width is greater than DWIDTH");
ERR := TRUE;
end if;
if su.ZRWIDTH > su.APB_DWIDTH then
printf("ERROR:Loop Count width is greater than DWIDTH");
ERR := TRUE;
end if;
if su.ICWIDTH > su.APB_AWIDTH then
printf("Too many instructions for AWIDTH");
ERR := TRUE;
end if;
if ERR then
assert FALSE
report "Simulation stopped due to core configuration error"
severity FAILURE;
end if;
end checksetup;
end testsupport;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -