testsupport.vhd

来自「Actel Fusion System Management Developme」· VHDL 代码 · 共 647 行 · 第 1/2 页

VHD
647
字号
              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.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 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_ADD       := 1; 
              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 + =
减小字号Ctrl + -
显示快捷键?