⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory_p.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
📖 第 1 页 / 共 5 页
字号:
  CONSTANT TestSignalName    : IN     STRING := "";  CONSTANT TestDelay         : IN     VitalDelayArrayType;  SIGNAL   RefSignal         : IN     std_ulogic;  CONSTANT RefSignalName     : IN     STRING := "";  CONSTANT RefDelay          : IN     TIME := 0 ns;  CONSTANT SetupHigh         : IN     VitalDelayArrayType;  CONSTANT SetupLow          : IN     VitalDelayArrayType;  CONSTANT HoldHigh          : IN     VitalDelayArrayType;  CONSTANT HoldLow           : IN     VitalDelayArrayType;  CONSTANT CheckEnabled      : IN     VitalBoolArrayT;  CONSTANT RefTransition     : IN     VitalEdgeSymbolType;  CONSTANT ArcType           : IN     VitalMemoryArcType := CrossArc;  CONSTANT NumBitsPerSubWord : IN     INTEGER := 1;  CONSTANT HeaderMsg         : IN     STRING := " ";  CONSTANT XOn               : IN     BOOLEAN := TRUE;  CONSTANT MsgOn             : IN     BOOLEAN := TRUE;  CONSTANT MsgSeverity       : IN     SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat         : IN     VitalMemoryMsgFormatType;  CONSTANT EnableSetupOnTest : IN     BOOLEAN := TRUE;  CONSTANT EnableSetupOnRef  : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnRef   : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnTest  : IN     BOOLEAN := TRUE  ); PROCEDURE VitalMemorySetupHoldCheck (  VARIABLE Violation         : OUT    X01ArrayT;  VARIABLE TimingData        : INOUT  VitalMemoryTimingDataType;              SIGNAL   TestSignal        : IN     std_logic_vector;  CONSTANT TestSignalName    : IN     STRING := "";  CONSTANT TestDelay         : IN     VitalDelayArrayType;  SIGNAL   RefSignal         : IN     std_logic_vector;  CONSTANT RefSignalName     : IN     STRING := "";  CONSTANT RefDelay          : IN     VitalDelayArrayType;  CONSTANT SetupHigh         : IN     VitalDelayArrayType;  CONSTANT SetupLow          : IN     VitalDelayArrayType;  CONSTANT HoldHigh          : IN     VitalDelayArrayType;  CONSTANT HoldLow           : IN     VitalDelayArrayType;  CONSTANT CheckEnabled      : IN     BOOLEAN := TRUE;  CONSTANT RefTransition     : IN     VitalEdgeSymbolType;  CONSTANT ArcType           : IN     VitalMemoryArcType := CrossArc;  CONSTANT NumBitsPerSubWord : IN     INTEGER := 1;  CONSTANT HeaderMsg         : IN     STRING := " ";  CONSTANT XOn               : IN     BOOLEAN := TRUE;  CONSTANT MsgOn             : IN     BOOLEAN := TRUE;  CONSTANT MsgSeverity       : IN     SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat         : IN     VitalMemoryMsgFormatType;  CONSTANT EnableSetupOnTest : IN     BOOLEAN := TRUE;   CONSTANT EnableSetupOnRef  : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnRef   : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnTest  : IN     BOOLEAN := TRUE  );     PROCEDURE VitalMemorySetupHoldCheck (  VARIABLE Violation         : OUT    X01ArrayT;  VARIABLE TimingData        : INOUT  VitalMemoryTimingDataType;              SIGNAL   TestSignal        : IN     std_logic_vector;  CONSTANT TestSignalName    : IN     STRING := "";  CONSTANT TestDelay         : IN     VitalDelayArrayType;  SIGNAL   RefSignal         : IN     std_logic_vector;  CONSTANT RefSignalName     : IN     STRING := "";  CONSTANT RefDelay          : IN     VitalDelayArrayType;  CONSTANT SetupHigh         : IN     VitalDelayArrayType;  CONSTANT SetupLow          : IN     VitalDelayArrayType;  CONSTANT HoldHigh          : IN     VitalDelayArrayType;  CONSTANT HoldLow           : IN     VitalDelayArrayType;  CONSTANT CheckEnabled      : IN     VitalBoolArrayT;  CONSTANT RefTransition     : IN     VitalEdgeSymbolType;  CONSTANT ArcType           : IN     VitalMemoryArcType := CrossArc;  CONSTANT NumBitsPerSubWord : IN     INTEGER := 1;  CONSTANT HeaderMsg         : IN     STRING := " ";  CONSTANT XOn               : IN     BOOLEAN := TRUE;  CONSTANT MsgOn             : IN     BOOLEAN := TRUE;  CONSTANT MsgSeverity       : IN     SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat         : IN     VitalMemoryMsgFormatType;  CONSTANT EnableSetupOnTest : IN     BOOLEAN := TRUE;   CONSTANT EnableSetupOnRef  : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnRef   : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnTest  : IN     BOOLEAN := TRUE  );     --------------- following are not needed --------------------------PROCEDURE VitalMemorySetupHoldCheck (  VARIABLE Violation         : OUT    X01;  VARIABLE TimingData        : INOUT  VitalMemoryTimingDataType;  SIGNAL   TestSignal        : IN     std_logic_vector;  CONSTANT TestSignalName    : IN     STRING := "";  CONSTANT TestDelay         : IN     VitalDelayArrayType;  SIGNAL   RefSignal         : IN     std_ulogic;  CONSTANT RefSignalName     : IN     STRING := "";  CONSTANT RefDelay          : IN     TIME := 0 ns;  CONSTANT SetupHigh         : IN     VitalDelayArrayType;  CONSTANT SetupLow          : IN     VitalDelayArrayType;  CONSTANT HoldHigh          : IN     VitalDelayArrayType;  CONSTANT HoldLow           : IN     VitalDelayArrayType;  CONSTANT CheckEnabled      : IN     BOOLEAN := TRUE;  CONSTANT RefTransition     : IN     VitalEdgeSymbolType;  CONSTANT HeaderMsg         : IN     STRING := " ";  CONSTANT XOn               : IN     BOOLEAN := TRUE;  CONSTANT MsgOn             : IN     BOOLEAN := TRUE;  CONSTANT MsgSeverity       : IN     SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat         : IN     VitalMemoryMsgFormatType;  CONSTANT EnableSetupOnTest : IN     BOOLEAN := TRUE;   CONSTANT EnableSetupOnRef  : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnRef   : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnTest  : IN     BOOLEAN := TRUE  );     PROCEDURE VitalMemorySetupHoldCheck (  VARIABLE Violation         : OUT    X01;  VARIABLE TimingData        : INOUT  VitalMemoryTimingDataType;              SIGNAL   TestSignal        : IN     std_logic_vector;  CONSTANT TestSignalName    : IN     STRING := "";  CONSTANT TestDelay         : IN     VitalDelayArrayType;  SIGNAL   RefSignal         : IN     std_logic_vector;  CONSTANT RefSignalName     : IN     STRING := "";  CONSTANT RefDelay          : IN     VitalDelayArrayType;  CONSTANT SetupHigh         : IN     VitalDelayArrayType;  CONSTANT SetupLow          : IN     VitalDelayArrayType;  CONSTANT HoldHigh          : IN     VitalDelayArrayType;  CONSTANT HoldLow           : IN     VitalDelayArrayType;  CONSTANT CheckEnabled      : IN     BOOLEAN := TRUE;  CONSTANT RefTransition     : IN     VitalEdgeSymbolType;  CONSTANT HeaderMsg         : IN     STRING := " ";  CONSTANT XOn               : IN     BOOLEAN := TRUE;  CONSTANT MsgOn             : IN     BOOLEAN := TRUE;  CONSTANT MsgSeverity       : IN     SEVERITY_LEVEL := WARNING;  CONSTANT ArcType           : IN     VitalMemoryArcType := CrossArc;  CONSTANT NumBitsPerSubWord : IN     INTEGER := 1;  CONSTANT MsgFormat         : IN     VitalMemoryMsgFormatType;  CONSTANT EnableSetupOnTest : IN     BOOLEAN := TRUE;   CONSTANT EnableSetupOnRef  : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnRef   : IN     BOOLEAN := TRUE;   CONSTANT EnableHoldOnTest  : IN     BOOLEAN := TRUE  );         -- -------------------------------------------------------------------------------- Function Name:  VitalPeriodPulseCheck---- Description:    VitalPeriodPulseCheck checks for minimum and maximum--                 periodicity and pulse width for "1" and "0" values of--                 the input test signal.  The timing constraint is --                 specified through parameters representing the minimal--                 period between successive rising and falling edges of--                 the input test signal and the minimum pulse widths --                 associated with high and low values.  --                 --                 VitalPeriodCheck's accepts rising and falling edges--                 from 1 and 0 as well as transitions to and from 'X.'--                 --                    _______________         __________--       ____________|               |_______|----                   |<--- pw_hi --->|--                   |<-------- period ----->|--                                -->| pw_lo |<----                 -- Arguments:--    IN             Type              Description--    TestSignal     std_logic_vector  Value of test signal  --    TestSignalName STRING            Name of the test signal--    TestDelay      VitalDelayArrayType --                                     Model's internal delay associated--                                     with TestSignal--    Period         VitalDelayArrayType --                                     Minimum period allowed between--                                     consecutive rising ('P') or --                                     falling ('F') transitions.--    PulseWidthHigh VitalDelayArrayType --                                     Minimum time allowed for a high--                                     pulse ('1' or 'H')--    PulseWidthLow  VitalDelayArrayType --                                     Minimum time allowed for a low--                                     pulse ('0' or 'L')--    CheckEnabled   BOOLEAN           Check performed if TRUE.--    HeaderMsg      STRING            String that will accompany any--                                     assertion messages produced.   --    XOn            BOOLEAN           If TRUE, Violation output parameter--                                     is set to "X". Otherwise, Violation--                                     is always set to "0." --    MsgOn          BOOLEAN           If TRUE, period/pulse violation--                                     message will be generated.--                                     Otherwise, no messages are generated,--                                     even though a violation is detected. --    MsgSeverity    SEVERITY_LEVEL    Severity level for the assertion.--    MsgFormat      VitalMemoryMsgFormatType--                                     Format of the Test/Reference signals--                                     in violation messages.--         --    INOUT--    PeriodData     VitalPeriodDataArrayType --                                     VitalPeriodPulseCheck information--                                     storage area.  This is used--                                     internally to detect reference edges--                                     and record the pulse and period--                                     times.--    OUT--    Violation      X01               This is the violation flag returned. --                   X01ArrayT         Overloaded for array type.---- ----------------------------------------------------------------------------PROCEDURE  VitalMemoryPeriodPulseCheck  (  VARIABLE Violation      : OUT   X01ArrayT;   VARIABLE PeriodData     : INOUT VitalPeriodDataArrayType;   SIGNAL   TestSignal     : IN    std_logic_vector;  CONSTANT TestSignalName : IN    STRING := "";  CONSTANT TestDelay      : IN    VitalDelayArrayType;  CONSTANT Period         : IN    VitalDelayArrayType;  CONSTANT PulseWidthHigh : IN    VitalDelayArrayType;  CONSTANT PulseWidthLow  : IN    VitalDelayArrayType;  CONSTANT CheckEnabled   : IN    BOOLEAN := TRUE;  CONSTANT HeaderMsg      : IN    STRING := " ";  CONSTANT XOn            : IN    BOOLEAN := TRUE;  CONSTANT MsgOn          : IN    BOOLEAN := TRUE;  CONSTANT MsgSeverity    : IN    SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat      : IN    VitalMemoryMsgFormatType);PROCEDURE  VitalMemoryPeriodPulseCheck  (  VARIABLE Violation      : OUT   X01;   VARIABLE PeriodData     : INOUT VitalPeriodDataArrayType;  SIGNAL   TestSignal     : IN    std_logic_vector;  CONSTANT TestSignalName : IN    STRING := "";  CONSTANT TestDelay      : IN    VitalDelayArrayType;  CONSTANT Period         : IN    VitalDelayArrayType;  CONSTANT PulseWidthHigh : IN    VitalDelayArrayType;  CONSTANT PulseWidthLow  : IN    VitalDelayArrayType;  CONSTANT CheckEnabled   : IN    BOOLEAN := TRUE;  CONSTANT HeaderMsg      : IN    STRING := " ";  CONSTANT XOn            : IN    BOOLEAN := TRUE;  CONSTANT MsgOn          : IN    BOOLEAN := TRUE;  CONSTANT MsgSeverity    : IN    SEVERITY_LEVEL := WARNING;  CONSTANT MsgFormat      : IN    VitalMemoryMsgFormatType);-- ------------------------------------------------------------------------------ Functionality Section-- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ All Memory Types and Record definitions.-- ----------------------------------------------------------------------------TYPE MemoryWordType        IS ARRAY (NATURAL RANGE <>) OF UX01;TYPE MemoryWordPtr         IS ACCESS MemoryWordType;TYPE MemoryArrayType       IS ARRAY (NATURAL RANGE <>) OF MemoryWordPtr;TYPE MemoryArrayPtrType    IS ACCESS MemoryArrayType;TYPE VitalMemoryArrayRecType IS RECORDNoOfWords           : POSITIVE;NoOfBitsPerWord     : POSITIVE;NoOfBitsPerSubWord  : POSITIVE;NoOfBitsPerEnable   : POSITIVE;MemoryArrayPtr      : MemoryArrayPtrType;END RECORD;TYPE VitalMemoryDataType    IS ACCESS VitalMemoryArrayRecType;TYPE VitalTimingDataVectorType IS ARRAY (NATURAL RANGE <>) OF VitalTimingDataType;TYPE VitalMemoryViolFlagSizeType IS ARRAY (NATURAL RANGE <>) OF INTEGER;-- ------------------------------------------------------------------------------ Symbol Literals used for Memory Table Modeling-- ------------------------------------------------------------------------------ Symbol literals from '/' to 'S' are closely related to MemoryTableMatch-- lookup matching and the order cannot be arbitrarily changed.-- The remaining symbol literals are interpreted directly and matchting is-- handled in the MemoryMatch procedure itself.TYPE VitalMemorySymbolType IS (  '/',      -- 0 -> 1  '\',      -- 1 -> 0  'P',      -- Union of '/' and '^' (any edge to 1)  'N',      -- Union of '\' and 'v' (any edge to 0)  'r',      -- 0 -> X  'f',      -- 1 -> X  'p',      -- Union of '/' and 'r' (any edge from 0)  'n',      -- Union of '\' and 'f' (any edge from 1)  'R',      -- Union of '^' and 'p' (any possible rising edge)  'F',      -- Union of 'v' and 'n' (any possible falling edge)  '^',      -- X -> 1  'v',      -- X -> 0  'E',      -- Union of 'v' and '^' (any edge from X)  'A',      -- Union of 'r' and '^' (rising edge to or from 'X')  'D',      -- Union of 'f' a

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -