📄 numeric_std-body.vhdl
字号:
severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<"": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(L) > R'LENGTH then return L < 0; end if; return UNSIGNED_LESS(TO_UNSIGNED(L, R01'LENGTH), R01); end "<"; -- Id: C.10 function "<" (L: INTEGER; R: SIGNED) return BOOLEAN is constant R_LEFT: INTEGER := R'LENGTH-1; alias XR: SIGNED(R_LEFT downto 0) is R; variable R01 : SIGNED(R_LEFT downto 0); begin if (R'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD.""<"": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<"": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(L) > R'LENGTH then return L < 0; end if; return SIGNED_LESS(TO_SIGNED(L, R01'LENGTH), R01); end "<"; -- Id: C.11 function "<" (L: UNSIGNED; R: NATURAL) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; variable L01 : UNSIGNED(L_LEFT downto 0); begin if (L'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD.""<"": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<"": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(R) > L'LENGTH then return 0 < R; end if; return UNSIGNED_LESS(L01, TO_UNSIGNED(R, L01'LENGTH)); end "<"; -- Id: C.12 function "<" (L: SIGNED; R: INTEGER) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: SIGNED(L_LEFT downto 0) is L; variable L01 : SIGNED(L_LEFT downto 0); begin if (L'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD.""<"": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<"": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(R) > L'LENGTH then return 0 < R; end if; return SIGNED_LESS(L01, TO_SIGNED(R, L01'LENGTH)); end "<"; --============================================================================ -- Id: C.13 function "<=" (L, R: UNSIGNED) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; constant R_LEFT: INTEGER := R'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; alias XR: UNSIGNED(R_LEFT downto 0) is R; constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH); variable L01 : UNSIGNED(L_LEFT downto 0); variable R01 : UNSIGNED(R_LEFT downto 0); begin if ((L'LENGTH < 1) or (R'LENGTH < 1)) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); R01 := TO_01(XR, 'X'); if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; return UNSIGNED_LESS_OR_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE)); end "<="; -- Id: C.14 function "<=" (L, R: SIGNED) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; constant R_LEFT: INTEGER := R'LENGTH-1; alias XL: SIGNED(L_LEFT downto 0) is L; alias XR: SIGNED(R_LEFT downto 0) is R; constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH); variable L01 : SIGNED(L_LEFT downto 0); variable R01 : SIGNED(R_LEFT downto 0); begin if ((L'LENGTH < 1) or (R'LENGTH < 1)) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); R01 := TO_01(XR, 'X'); if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; return SIGNED_LESS_OR_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE)); end "<="; -- Id: C.15 function "<=" (L: NATURAL; R: UNSIGNED) return BOOLEAN is constant R_LEFT: INTEGER := R'LENGTH-1; alias XR: UNSIGNED(R_LEFT downto 0) is R; variable R01 : UNSIGNED(R_LEFT downto 0); begin if (R'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(L) > R'LENGTH then return L < 0; end if; return UNSIGNED_LESS_OR_EQUAL(TO_UNSIGNED(L, R01'LENGTH), R01); end "<="; -- Id: C.16 function "<=" (L: INTEGER; R: SIGNED) return BOOLEAN is constant R_LEFT: INTEGER := R'LENGTH-1; alias XR: SIGNED(R_LEFT downto 0) is R; variable R01 : SIGNED(R_LEFT downto 0); begin if (R'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(L) > R'LENGTH then return L < 0; end if; return SIGNED_LESS_OR_EQUAL(TO_SIGNED(L, R01'LENGTH), R01); end "<="; -- Id: C.17 function "<=" (L: UNSIGNED; R: NATURAL) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; variable L01 : UNSIGNED(L_LEFT downto 0); begin if (L_LEFT < 0) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(R) > L'LENGTH then return 0 < R; end if; return UNSIGNED_LESS_OR_EQUAL(L01, TO_UNSIGNED(R, L01'LENGTH)); end "<="; -- Id: C.18 function "<=" (L: SIGNED; R: INTEGER) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: SIGNED(L_LEFT downto 0) is L; variable L01 : SIGNED(L_LEFT downto 0); begin if (L_LEFT < 0) then assert NO_WARNING report "NUMERIC_STD.""<="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD.""<="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(R) > L'LENGTH then return 0 < R; end if; return SIGNED_LESS_OR_EQUAL(L01, TO_SIGNED(R, L01'LENGTH)); end "<="; --============================================================================ -- Id: C.19 function ">=" (L, R: UNSIGNED) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; constant R_LEFT: INTEGER := R'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; alias XR: UNSIGNED(R_LEFT downto 0) is R; constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH); variable L01 : UNSIGNED(L_LEFT downto 0); variable R01 : UNSIGNED(R_LEFT downto 0); begin if ((L'LENGTH < 1) or (R'LENGTH < 1)) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); R01 := TO_01(XR, 'X'); if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; return not UNSIGNED_LESS(RESIZE(L01, SIZE), RESIZE(R01, SIZE)); end ">="; -- Id: C.20 function ">=" (L, R: SIGNED) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; constant R_LEFT: INTEGER := R'LENGTH-1; alias XL: SIGNED(L_LEFT downto 0) is L; alias XR: SIGNED(R_LEFT downto 0) is R; constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH); variable L01 : SIGNED(L_LEFT downto 0); variable R01 : SIGNED(R_LEFT downto 0); begin if ((L'LENGTH < 1) or (R'LENGTH < 1)) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); R01 := TO_01(XR, 'X'); if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; return not SIGNED_LESS(RESIZE(L01, SIZE), RESIZE(R01, SIZE)); end ">="; -- Id: C.21 function ">=" (L: NATURAL; R: UNSIGNED) return BOOLEAN is constant R_LEFT: INTEGER := R'LENGTH-1; alias XR: UNSIGNED(R_LEFT downto 0) is R; variable R01 : UNSIGNED(R_LEFT downto 0); begin if (R'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(L) > R'LENGTH then return L > 0; end if; return not UNSIGNED_LESS(TO_UNSIGNED(L, R01'LENGTH), R01); end ">="; -- Id: C.22 function ">=" (L: INTEGER; R: SIGNED) return BOOLEAN is constant R_LEFT: INTEGER := R'LENGTH-1; alias XR: SIGNED(R_LEFT downto 0) is R; variable R01 : SIGNED(R_LEFT downto 0); begin if (R'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; R01 := TO_01(XR, 'X'); if (R01(R01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(L) > R'LENGTH then return L > 0; end if; return not SIGNED_LESS(TO_SIGNED(L, R01'LENGTH), R01); end ">="; -- Id: C.23 function ">=" (L: UNSIGNED; R: NATURAL) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; variable L01 : UNSIGNED(L_LEFT downto 0); begin if (L'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if UNSIGNED_NUM_BITS(R) > L'LENGTH then return 0 > R; end if; return not UNSIGNED_LESS(L01, TO_UNSIGNED(R, L01'LENGTH)); end ">="; -- Id: C.24 function ">=" (L: SIGNED; R: INTEGER) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; alias XL: SIGNED(L_LEFT downto 0) is L; variable L01 : SIGNED(L_LEFT downto 0); begin if (L'LENGTH < 1) then assert NO_WARNING report "NUMERIC_STD."">="": null argument detected, returning FALSE" severity WARNING; return FALSE; end if; L01 := TO_01(XL, 'X'); if (L01(L01'LEFT)='X') then assert NO_WARNING report "NUMERIC_STD."">="": metavalue detected, returning FALSE" severity WARNING; return FALSE; end if; if SIGNED_NUM_BITS(R) > L'LENGTH then return 0 > R; end if; return not SIGNED_LESS(L01, TO_SIGNED(R, L01'LENGTH)); end ">="; --============================================================================ -- Id: C.25 function "=" (L, R: UNSIGNED) return BOOLEAN is constant L_LEFT: INTEGER := L'LENGTH-1; constant R_LEFT: INTEGER := R'LENGTH-1; alias XL: UNSIGNED(L_LEFT downto 0) is L; alias XR: UNSIGNED(R_LEFT downto 0) is R; constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -