Files
jens 0afb7b1758 - added
git-svn-id: http://moon:8086/svn/vhdl/trunk@1097 cc03376c-175c-47c8-b038-4cd826a8556b
2015-05-16 17:41:08 +00:00

7687 lines
310 KiB
VHDL

-- Copyright (C) 1991-2015 Altera Corporation. All rights reserved.
-- This simulation model contains highly confidential and
-- proprietary information of Altera and is being provided
-- in accordance with and subject to the protections of the
-- applicable Altera Program License Subscription Agreement
-- which governs its use and disclosure. Your use of Altera
-- Corporation's design tools, logic functions and other
-- software and tools, and its AMPP partner logic functions,
-- and any output files any of the foregoing (including device
-- programming or simulation files), and any associated
-- documentation or information are expressly subject to the
-- terms and conditions of the Altera Program License Subscription
-- Agreement, the Altera Quartus II License Agreement, the Altera
-- MegaCore Function License Agreement, or other applicable
-- license agreement, including, without limitation, that your
-- use is for the sole purpose of simulating designs for use
-- exclusively in logic devices manufactured by Altera and sold
-- by Altera or its authorized distributors. Please refer to the
-- applicable agreement for further details. Altera products and
-- services are protected under numerous U.S. and foreign patents,
-- maskwork rights, copyrights and other intellectual property laws.
-- Altera assumes no responsibility or liability arising out of the
-- application or use of this simulation model.
-- Quartus II 15.0.0 Build 145 04/22/2015
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
package cyclonev_atom_pack is
function str_to_bin (lut_mask : string ) return std_logic_vector;
function product(list : std_logic_vector) return std_logic ;
function alt_conv_integer(arg : in std_logic_vector) return integer;
-- default generic values
CONSTANT DefWireDelay : VitalDelayType01 := (0 ns, 0 ns);
CONSTANT DefPropDelay01 : VitalDelayType01 := (0 ns, 0 ns);
CONSTANT DefPropDelay01Z : VitalDelayType01Z := (OTHERS => 0 ns);
CONSTANT DefSetupHoldCnst : TIME := 0 ns;
CONSTANT DefPulseWdthCnst : TIME := 0 ns;
-- default control options
-- CONSTANT DefGlitchMode : VitalGlitchKindType := OnEvent;
-- change default delay type to Transport : for spr 68748
CONSTANT DefGlitchMode : VitalGlitchKindType := VitalTransport;
CONSTANT DefGlitchMsgOn : BOOLEAN := FALSE;
CONSTANT DefGlitchXOn : BOOLEAN := FALSE;
CONSTANT DefMsgOnChecks : BOOLEAN := TRUE;
CONSTANT DefXOnChecks : BOOLEAN := TRUE;
-- output strength mapping
-- UX01ZWHL-
CONSTANT PullUp : VitalOutputMapType := "UX01HX01X";
CONSTANT NoPullUpZ : VitalOutputMapType := "UX01ZX01X";
CONSTANT PullDown : VitalOutputMapType := "UX01LX01X";
-- primitive result strength mapping
CONSTANT wiredOR : VitalResultMapType := ( 'U', 'X', 'L', '1' );
CONSTANT wiredAND : VitalResultMapType := ( 'U', 'X', '0', 'H' );
CONSTANT L : VitalTableSymbolType := '0';
CONSTANT H : VitalTableSymbolType := '1';
CONSTANT x : VitalTableSymbolType := '-';
CONSTANT S : VitalTableSymbolType := 'S';
CONSTANT R : VitalTableSymbolType := '/';
CONSTANT U : VitalTableSymbolType := 'X';
CONSTANT V : VitalTableSymbolType := 'B'; -- valid clock signal (non-rising)
-- Declare array types for CAM_SLICE
TYPE cyclonev_mem_data IS ARRAY (0 to 31) of STD_LOGIC_VECTOR (31 downto 0);
function int2str( value : integer ) return string;
function map_x_to_0 (value : std_logic) return std_logic;
function SelectDelay (CONSTANT Paths: IN VitalPathArray01Type) return TIME;
function int2bit (arg : boolean) return std_logic;
function int2bit (arg : integer) return std_logic;
function bin2int (s : bit_vector) return integer;
function bin2int (s : bit) return integer;
function bin2int (s : std_logic_vector) return integer;
function bin2int (s : std_logic) return integer;
function int2bin (arg : integer; size : integer) return std_logic_vector;
function int2bin (arg : boolean; size : integer) return std_logic_vector;
function calc_sum_len( widtha : integer; widthb : integer) return integer;
end cyclonev_atom_pack;
library IEEE;
use IEEE.std_logic_1164.all;
package body cyclonev_atom_pack is
type masklength is array (4 downto 1) of std_logic_vector(3 downto 0);
function str_to_bin (lut_mask : string) return std_logic_vector is
variable slice : masklength := (OTHERS => "0000");
variable mask : std_logic_vector(15 downto 0);
begin
for i in 1 to lut_mask'length loop
case lut_mask(i) is
when '0' => slice(i) := "0000";
when '1' => slice(i) := "0001";
when '2' => slice(i) := "0010";
when '3' => slice(i) := "0011";
when '4' => slice(i) := "0100";
when '5' => slice(i) := "0101";
when '6' => slice(i) := "0110";
when '7' => slice(i) := "0111";
when '8' => slice(i) := "1000";
when '9' => slice(i) := "1001";
when 'a' => slice(i) := "1010";
when 'A' => slice(i) := "1010";
when 'b' => slice(i) := "1011";
when 'B' => slice(i) := "1011";
when 'c' => slice(i) := "1100";
when 'C' => slice(i) := "1100";
when 'd' => slice(i) := "1101";
when 'D' => slice(i) := "1101";
when 'e' => slice(i) := "1110";
when 'E' => slice(i) := "1110";
when others => slice(i) := "1111";
end case;
end loop;
mask := (slice(1) & slice(2) & slice(3) & slice(4));
return (mask);
end str_to_bin;
function product (list: std_logic_vector) return std_logic is
begin
for i in 0 to 31 loop
if list(i) = '0' then
return ('0');
end if;
end loop;
return ('1');
end product;
function alt_conv_integer(arg : in std_logic_vector) return integer is
variable result : integer;
begin
result := 0;
for i in arg'range loop
if arg(i) = '1' then
result := result + 2**i;
end if;
end loop;
return result;
end alt_conv_integer;
function int2str( value : integer ) return string is
variable ivalue,index : integer;
variable digit : integer;
variable line_no: string(8 downto 1) := " ";
begin
ivalue := value;
index := 1;
if (ivalue = 0) then
line_no := " 0";
end if;
while (ivalue > 0) loop
digit := ivalue MOD 10;
ivalue := ivalue/10;
case digit is
when 0 =>
line_no(index) := '0';
when 1 =>
line_no(index) := '1';
when 2 =>
line_no(index) := '2';
when 3 =>
line_no(index) := '3';
when 4 =>
line_no(index) := '4';
when 5 =>
line_no(index) := '5';
when 6 =>
line_no(index) := '6';
when 7 =>
line_no(index) := '7';
when 8 =>
line_no(index) := '8';
when 9 =>
line_no(index) := '9';
when others =>
ASSERT FALSE
REPORT "Illegal number!"
SEVERITY ERROR;
end case;
index := index + 1;
end loop;
return line_no;
end;
function map_x_to_0 (value : std_logic) return std_logic is
begin
if (Is_X (value) = TRUE) then
return '0';
else
return value;
end if;
end;
function SelectDelay (CONSTANT Paths : IN VitalPathArray01Type) return TIME IS
variable Temp : TIME;
variable TransitionTime : TIME := TIME'HIGH;
variable PathDelay : TIME := TIME'HIGH;
begin
for i IN Paths'RANGE loop
next when not Paths(i).PathCondition;
next when Paths(i).InputChangeTime > TransitionTime;
Temp := Paths(i).PathDelay(tr01);
if Paths(i).InputChangeTime < TransitionTime then
PathDelay := Temp;
else
if Temp < PathDelay then
PathDelay := Temp;
end if;
end if;
TransitionTime := Paths(i).InputChangeTime;
end loop;
return PathDelay;
end;
function int2bit (arg : integer) return std_logic is
variable int_val : integer := arg;
variable result : std_logic;
begin
if (int_val = 0) then
result := '0';
else
result := '1';
end if;
return result;
end int2bit;
function int2bit (arg : boolean) return std_logic is
variable int_val : boolean := arg;
variable result : std_logic;
begin
if (int_val ) then
result := '1';
else
result := '0';
end if;
return result;
end int2bit;
function bin2int (s : bit_vector) return integer is
constant temp : bit_vector(s'high-s'low DOWNTO 0) := s;
variable result : integer := 0;
begin
for i in temp'range loop
if (temp(i) = '1') then
result := result + (2**i);
end if;
end loop;
return(result);
end bin2int;
function bin2int (s : bit) return integer is
constant temp : bit := s;
variable result : integer := 0;
begin
if (temp = '1') then
result := 1;
else
result := 0;
end if;
return(result);
end bin2int;
function bin2int (s : std_logic_vector) return integer is
constant temp : std_logic_vector(s'high-s'low DOWNTO 0) := s;
variable result : integer := 0;
begin
for i in temp'range loop
if (temp(i) = '1') then
result := result + (2**i);
end if;
end loop;
return(result);
end bin2int;
function bin2int (s : std_logic) return integer is
constant temp : std_logic := s;
variable result : integer := 0;
begin
if (temp = '1') then
result := 1;
else
result := 0;
end if;
return(result);
end bin2int;
function int2bin (arg : integer; size : integer) return std_logic_vector is
variable int_val : integer := arg;
variable result : std_logic_vector(size-1 downto 0);
begin
for i in 0 to result'left loop
if ((int_val mod 2) = 0) then
result(i) := '0';
else
result(i) := '1';
end if;
int_val := int_val/2;
end loop;
return result;
end int2bin;
function int2bin (arg : boolean; size : integer) return std_logic_vector is
variable result : std_logic_vector(size-1 downto 0);
begin
if(arg)then
result := (OTHERS => '1');
else
result := (OTHERS => '0');
end if;
return result;
end int2bin;
function calc_sum_len( widtha : integer; widthb : integer) return integer is
variable result: integer;
begin
if(widtha >= widthb) then
result := widtha + 1;
else
result := widthb + 1;
end if;
return result;
end calc_sum_len;
end cyclonev_atom_pack;
Library ieee;
use ieee.std_logic_1164.all;
Package cyclonev_pllpack is
procedure find_simple_integer_fraction( numerator : in integer;
denominator : in integer;
max_denom : in integer;
fraction_num : out integer;
fraction_div : out integer);
procedure find_m_and_n_4_manual_phase ( inclock_period : in integer;
vco_phase_shift_step : in integer;
clk0_mult: in integer; clk1_mult: in integer;
clk2_mult: in integer; clk3_mult: in integer;
clk4_mult: in integer; clk5_mult: in integer;
clk6_mult: in integer; clk7_mult: in integer;
clk8_mult: in integer; clk9_mult: in integer;
clk0_div : in integer; clk1_div : in integer;
clk2_div : in integer; clk3_div : in integer;
clk4_div : in integer; clk5_div : in integer;
clk6_div : in integer; clk7_div : in integer;
clk8_div : in integer; clk9_div : in integer;
clk0_used : in string; clk1_used : in string;
clk2_used : in string; clk3_used : in string;
clk4_used : in string; clk5_used : in string;
clk6_used : in string; clk7_used : in string;
clk8_used : in string; clk9_used : in string;
m : out integer;
n : out integer );
function gcd (X: integer; Y: integer) return integer;
function count_digit (X: integer) return integer;
function scale_num (X: integer; Y: integer) return integer;
function lcm (A1: integer; A2: integer; A3: integer; A4: integer;
A5: integer; A6: integer; A7: integer;
A8: integer; A9: integer; A10: integer; P: integer) return integer;
function output_counter_value (clk_divide: integer; clk_mult : integer ;
M: integer; N: integer ) return integer;
function counter_mode (duty_cycle: integer; output_counter_value: integer) return string;
function counter_high (output_counter_value: integer := 1; duty_cycle: integer)
return integer;
function counter_low (output_counter_value: integer; duty_cycle: integer)
return integer;
function mintimedelay (t1: integer; t2: integer; t3: integer; t4: integer;
t5: integer; t6: integer; t7: integer; t8: integer;
t9: integer; t10: integer) return integer;
function maxnegabs (t1: integer; t2: integer; t3: integer; t4: integer;
t5: integer; t6: integer; t7: integer; t8: integer;
t9: integer; t10: integer) return integer;
function counter_time_delay ( clk_time_delay: integer;
m_time_delay: integer; n_time_delay: integer)
return integer;
function get_phase_degree (phase_shift: integer; clk_period: integer) return integer;
function counter_initial (tap_phase: integer; m: integer; n: integer)
return integer;
function counter_ph (tap_phase: integer; m : integer; n: integer) return integer;
function ph_adjust (tap_phase: integer; ph_base : integer) return integer;
function translate_string (mode : string) return string;
function str2int (s : string) return integer;
function dqs_str2int (s : string) return integer;
end cyclonev_pllpack;
package body cyclonev_pllpack is
-- finds the closest integer fraction of a given pair of numerator and denominator.
procedure find_simple_integer_fraction( numerator : in integer;
denominator : in integer;
max_denom : in integer;
fraction_num : out integer;
fraction_div : out integer) is
constant MAX_ITER : integer := 20;
type INT_ARRAY is array ((MAX_ITER-1) downto 0) of integer;
variable quotient_array : INT_ARRAY;
variable int_loop_iter : integer;
variable int_quot : integer;
variable m_value : integer;
variable d_value : integer;
variable old_m_value : integer;
variable swap : integer;
variable loop_iter : integer;
variable num : integer;
variable den : integer;
variable i_max_iter : integer;
begin
loop_iter := 0;
if (numerator = 0) then
num := 1;
else
num := numerator;
end if;
if (denominator = 0) then
den := 1;
else
den := denominator;
end if;
i_max_iter := max_iter;
while (loop_iter < i_max_iter) loop
int_quot := num / den;
quotient_array(loop_iter) := int_quot;
num := num - (den*int_quot);
loop_iter := loop_iter+1;
if ((num = 0) or (max_denom /= -1) or (loop_iter = i_max_iter)) then
-- calculate the numerator and denominator if there is a restriction on the
-- max denom value or if the loop is ending
m_value := 0;
d_value := 1;
-- get the rounded value at this stage for the remaining fraction
if (den /= 0) then
m_value := (2*num/den);
end if;
-- calculate the fraction numerator and denominator at this stage
for int_loop_iter in (loop_iter-1) downto 0 loop
if (m_value = 0) then
m_value := quotient_array(int_loop_iter);
d_value := 1;
else
old_m_value := m_value;
m_value := (quotient_array(int_loop_iter)*m_value) + d_value;
d_value := old_m_value;
end if;
end loop;
-- if the denominator is less than the maximum denom_value or if there is no restriction save it
if ((d_value <= max_denom) or (max_denom = -1)) then
if ((m_value = 0) or (d_value = 0)) then
fraction_num := numerator;
fraction_div := denominator;
else
fraction_num := m_value;
fraction_div := d_value;
end if;
end if;
-- end the loop if the denomitor has overflown or the numerator is zero (no remainder during this round)
if (((d_value > max_denom) and (max_denom /= -1)) or (num = 0)) then
i_max_iter := loop_iter;
end if;
end if;
-- swap the numerator and denominator for the next round
swap := den;
den := num;
num := swap;
end loop;
end find_simple_integer_fraction;
-- find the M and N values for Manual phase based on the following 5 criterias:
-- 1. The PFD frequency (i.e. Fin / N) must be in the range 5 MHz to 720 MHz
-- 2. The VCO frequency (i.e. Fin * M / N) must be in the range 300 MHz to 1300 MHz
-- 3. M is less than 512
-- 4. N is less than 512
-- 5. It's the smallest M/N which satisfies all the above constraints, and is within 2ps
-- of the desired vco-phase-shift-step
procedure find_m_and_n_4_manual_phase ( inclock_period : in integer;
vco_phase_shift_step : in integer;
clk0_mult: in integer; clk1_mult: in integer;
clk2_mult: in integer; clk3_mult: in integer;
clk4_mult: in integer; clk5_mult: in integer;
clk6_mult: in integer; clk7_mult: in integer;
clk8_mult: in integer; clk9_mult: in integer;
clk0_div : in integer; clk1_div : in integer;
clk2_div : in integer; clk3_div : in integer;
clk4_div : in integer; clk5_div : in integer;
clk6_div : in integer; clk7_div : in integer;
clk8_div : in integer; clk9_div : in integer;
clk0_used : in string; clk1_used : in string;
clk2_used : in string; clk3_used : in string;
clk4_used : in string; clk5_used : in string;
clk6_used : in string; clk7_used : in string;
clk8_used : in string; clk9_used : in string;
m : out integer;
n : out integer ) is
constant MAX_M : integer := 511;
constant MAX_N : integer := 511;
constant MAX_PFD : integer := 720;
constant MIN_PFD : integer := 5;
constant MAX_VCO : integer := 1600; -- max vco frequency. (in mHz)
constant MIN_VCO : integer := 300; -- min vco frequency. (in mHz)
constant MAX_OFFSET : real := 0.004;
variable vco_period : integer;
variable pfd_freq : integer;
variable vco_freq : integer;
variable vco_ps_step_value : integer;
variable i_m : integer;
variable i_n : integer;
variable i_pre_m : integer;
variable i_pre_n : integer;
variable closest_vco_step_value : integer;
variable i_max_iter : integer;
variable loop_iter : integer;
variable clk0_div_factor_real : real;
variable clk1_div_factor_real : real;
variable clk2_div_factor_real : real;
variable clk3_div_factor_real : real;
variable clk4_div_factor_real : real;
variable clk5_div_factor_real : real;
variable clk6_div_factor_real : real;
variable clk7_div_factor_real : real;
variable clk8_div_factor_real : real;
variable clk9_div_factor_real : real;
variable clk0_div_factor_int : integer;
variable clk1_div_factor_int : integer;
variable clk2_div_factor_int : integer;
variable clk3_div_factor_int : integer;
variable clk4_div_factor_int : integer;
variable clk5_div_factor_int : integer;
variable clk6_div_factor_int : integer;
variable clk7_div_factor_int : integer;
variable clk8_div_factor_int : integer;
variable clk9_div_factor_int : integer;
begin
vco_period := vco_phase_shift_step * 8;
i_pre_m := 0;
i_pre_n := 0;
closest_vco_step_value := 0;
LOOP_1 : for i_n_out in 1 to MAX_N loop
for i_m_out in 1 to MAX_M loop
clk0_div_factor_real := real(clk0_div * i_m_out) / real(clk0_mult * i_n_out);
clk1_div_factor_real := real(clk1_div * i_m_out) / real(clk1_mult * i_n_out);
clk2_div_factor_real := real(clk2_div * i_m_out) / real(clk2_mult * i_n_out);
clk3_div_factor_real := real(clk3_div * i_m_out) / real(clk3_mult * i_n_out);
clk4_div_factor_real := real(clk4_div * i_m_out) / real(clk4_mult * i_n_out);
clk5_div_factor_real := real(clk5_div * i_m_out) / real(clk5_mult * i_n_out);
clk6_div_factor_real := real(clk6_div * i_m_out) / real(clk6_mult * i_n_out);
clk7_div_factor_real := real(clk7_div * i_m_out) / real(clk7_mult * i_n_out);
clk8_div_factor_real := real(clk8_div * i_m_out) / real(clk8_mult * i_n_out);
clk9_div_factor_real := real(clk9_div * i_m_out) / real(clk9_mult * i_n_out);
clk0_div_factor_int := integer(clk0_div_factor_real);
clk1_div_factor_int := integer(clk1_div_factor_real);
clk2_div_factor_int := integer(clk2_div_factor_real);
clk3_div_factor_int := integer(clk3_div_factor_real);
clk4_div_factor_int := integer(clk4_div_factor_real);
clk5_div_factor_int := integer(clk5_div_factor_real);
clk6_div_factor_int := integer(clk6_div_factor_real);
clk7_div_factor_int := integer(clk7_div_factor_real);
clk8_div_factor_int := integer(clk8_div_factor_real);
clk9_div_factor_int := integer(clk9_div_factor_real);
if (((abs(clk0_div_factor_real - real(clk0_div_factor_int)) < MAX_OFFSET) or (clk0_used = "unused")) and
((abs(clk1_div_factor_real - real(clk1_div_factor_int)) < MAX_OFFSET) or (clk1_used = "unused")) and
((abs(clk2_div_factor_real - real(clk2_div_factor_int)) < MAX_OFFSET) or (clk2_used = "unused")) and
((abs(clk3_div_factor_real - real(clk3_div_factor_int)) < MAX_OFFSET) or (clk3_used = "unused")) and
((abs(clk4_div_factor_real - real(clk4_div_factor_int)) < MAX_OFFSET) or (clk4_used = "unused")) and
((abs(clk5_div_factor_real - real(clk5_div_factor_int)) < MAX_OFFSET) or (clk5_used = "unused")) and
((abs(clk6_div_factor_real - real(clk6_div_factor_int)) < MAX_OFFSET) or (clk6_used = "unused")) and
((abs(clk7_div_factor_real - real(clk7_div_factor_int)) < MAX_OFFSET) or (clk7_used = "unused")) and
((abs(clk8_div_factor_real - real(clk8_div_factor_int)) < MAX_OFFSET) or (clk8_used = "unused")) and
((abs(clk9_div_factor_real - real(clk9_div_factor_int)) < MAX_OFFSET) or (clk9_used = "unused")) )
then
if ((i_m_out /= 0) and (i_n_out /= 0))
then
pfd_freq := 1000000 / (inclock_period * i_n_out);
vco_freq := (1000000 * i_m_out) / (inclock_period * i_n_out);
vco_ps_step_value := (inclock_period * i_n_out) / (8 * i_m_out);
if ( (i_m_out < max_m) and (i_n_out < max_n) and (pfd_freq >= min_pfd) and (pfd_freq <= max_pfd) and
(vco_freq >= min_vco) and (vco_freq <= max_vco) )
then
if (abs(vco_ps_step_value - vco_phase_shift_step) <= 2)
then
i_pre_m := i_m_out;
i_pre_n := i_n_out;
exit LOOP_1;
else
if ((closest_vco_step_value = 0) or (abs(vco_ps_step_value - vco_phase_shift_step) < abs(closest_vco_step_value - vco_phase_shift_step)))
then
i_pre_m := i_m_out;
i_pre_n := i_n_out;
closest_vco_step_value := vco_ps_step_value;
end if;
end if;
end if;
end if;
end if;
end loop;
end loop;
if ((i_pre_m /= 0) and (i_pre_n /= 0))
then
find_simple_integer_fraction(i_pre_m, i_pre_n,
MAX_N, m, n);
else
n := 1;
m := lcm (clk0_mult, clk1_mult, clk2_mult, clk3_mult,
clk4_mult, clk5_mult, clk6_mult,
clk7_mult, clk8_mult, clk9_mult, inclock_period);
end if;
end find_m_and_n_4_manual_phase;
-- find the greatest common denominator of X and Y
function gcd (X: integer; Y: integer) return integer is
variable L, S, R, G : integer := 1;
begin
if (X < Y) then -- find which is smaller.
S := X;
L := Y;
else
S := Y;
L := X;
end if;
R := S;
while ( R > 1) loop
S := L;
L := R;
R := S rem L; -- divide bigger number by smaller.
-- remainder becomes smaller number.
end loop;
if (R = 0) then -- if evenly divisible then L is gcd else it is 1.
G := L;
else
G := R;
end if;
return G;
end gcd;
-- count the number of digits in the given integer
function count_digit (X: integer)
return integer is
variable count, result: integer := 0;
begin
result := X;
while (result /= 0) loop
result := (result / 10);
count := count + 1;
end loop;
return count;
end count_digit;
-- reduce the given huge number to Y significant digits
function scale_num (X: integer; Y: integer)
return integer is
variable count : integer := 0;
variable lc, fac_ten, result: integer := 1;
begin
count := count_digit(X);
for lc in 1 to (count-Y) loop
fac_ten := fac_ten * 10;
end loop;
result := (X / fac_ten);
return result;
end scale_num;
-- find the least common multiple of A1 to A10
function lcm (A1: integer; A2: integer; A3: integer; A4: integer;
A5: integer; A6: integer; A7: integer;
A8: integer; A9: integer; A10: integer; P: integer)
return integer is
variable M1, M2, M3, M4, M5 , M6, M7, M8, M9, R: integer := 1;
begin
M1 := (A1 * A2)/gcd(A1, A2);
M2 := (M1 * A3)/gcd(M1, A3);
M3 := (M2 * A4)/gcd(M2, A4);
M4 := (M3 * A5)/gcd(M3, A5);
M5 := (M4 * A6)/gcd(M4, A6);
M6 := (M5 * A7)/gcd(M5, A7);
M7 := (M6 * A8)/gcd(M6, A8);
M8 := (M7 * A9)/gcd(M7, A9);
M9 := (M8 * A10)/gcd(M8, A10);
if (M9 < 3) then
R := 10;
elsif (M9 = 3) then
R := 9;
elsif ((M9 <= 10) and (M9 > 3)) then
R := 4 * M9;
elsif (M9 > 1000) then
R := scale_num(M9,3);
else
R := M9 ;
end if;
return R;
end lcm;
-- find the factor of division of the output clock frequency compared to the VCO
function output_counter_value (clk_divide: integer; clk_mult: integer ;
M: integer; N: integer ) return integer is
variable r_real : real := 1.0;
variable r: integer := 1;
begin
r_real := real(clk_divide * M)/ real(clk_mult * N);
r := integer(r_real);
return R;
end output_counter_value;
-- find the mode of each PLL counter - bypass, even or odd
function counter_mode (duty_cycle: integer; output_counter_value: integer)
return string is
variable R: string (1 to 6) := " ";
variable counter_value: integer := 1;
begin
counter_value := (2*duty_cycle*output_counter_value)/100;
if output_counter_value = 1 then
R := "bypass";
elsif (counter_value REM 2) = 0 then
R := " even";
else
R := " odd";
end if;
return R;
end counter_mode;
-- find the number of VCO clock cycles to hold the output clock high
function counter_high (output_counter_value: integer := 1; duty_cycle: integer)
return integer is
variable R: integer := 1;
variable half_cycle_high : integer := 1;
begin
half_cycle_high := (duty_cycle * output_counter_value *2)/100 ;
if (half_cycle_high REM 2 = 0) then
R := half_cycle_high/2 ;
else
R := (half_cycle_high/2) + 1;
end if;
return R;
end;
-- find the number of VCO clock cycles to hold the output clock low
function counter_low (output_counter_value: integer; duty_cycle: integer)
return integer is
variable R, R1: integer := 1;
variable half_cycle_high : integer := 1;
begin
half_cycle_high := (duty_cycle * output_counter_value*2)/100 ;
if (half_cycle_high REM 2 = 0) then
R1 := half_cycle_high/2 ;
else
R1 := (half_cycle_high/2) + 1;
end if;
R := output_counter_value - R1;
if (R = 0) then
R := 1;
end if;
return R;
end;
-- find the smallest time delay amongst t1 to t10
function mintimedelay (t1: integer; t2: integer; t3: integer; t4: integer;
t5: integer; t6: integer; t7: integer; t8: integer;
t9: integer; t10: integer) return integer is
variable m1,m2,m3,m4,m5,m6,m7,m8,m9 : integer := 0;
begin
if (t1 < t2) then m1 := t1; else m1 := t2; end if;
if (m1 < t3) then m2 := m1; else m2 := t3; end if;
if (m2 < t4) then m3 := m2; else m3 := t4; end if;
if (m3 < t5) then m4 := m3; else m4 := t5; end if;
if (m4 < t6) then m5 := m4; else m5 := t6; end if;
if (m5 < t7) then m6 := m5; else m6 := t7; end if;
if (m6 < t8) then m7 := m6; else m7 := t8; end if;
if (m7 < t9) then m8 := m7; else m8 := t9; end if;
if (m8 < t10) then m9 := m8; else m9 := t10; end if;
if (m9 > 0) then return m9; else return 0; end if;
end;
-- find the numerically largest negative number, and return its absolute value
function maxnegabs (t1: integer; t2: integer; t3: integer; t4: integer;
t5: integer; t6: integer; t7: integer; t8: integer;
t9: integer; t10: integer) return integer is
variable m1,m2,m3,m4,m5,m6,m7,m8,m9 : integer := 0;
begin
if (t1 < t2) then m1 := t1; else m1 := t2; end if;
if (m1 < t3) then m2 := m1; else m2 := t3; end if;
if (m2 < t4) then m3 := m2; else m3 := t4; end if;
if (m3 < t5) then m4 := m3; else m4 := t5; end if;
if (m4 < t6) then m5 := m4; else m5 := t6; end if;
if (m5 < t7) then m6 := m5; else m6 := t7; end if;
if (m6 < t8) then m7 := m6; else m7 := t8; end if;
if (m7 < t9) then m8 := m7; else m8 := t9; end if;
if (m8 < t10) then m9 := m8; else m9 := t10; end if;
if (m9 < 0) then return (0 - m9); else return 0; end if;
end;
-- adjust the phase (tap_phase) with the largest negative number (ph_base)
function ph_adjust (tap_phase: integer; ph_base : integer) return integer is
begin
return (tap_phase + ph_base);
end;
-- find the time delay for each PLL counter
function counter_time_delay (clk_time_delay: integer;
m_time_delay: integer; n_time_delay: integer)
return integer is
variable R: integer := 0;
begin
R := clk_time_delay + m_time_delay - n_time_delay;
return R;
end;
-- calculate the given phase shift (in ps) in terms of degrees
function get_phase_degree (phase_shift: integer; clk_period: integer)
return integer is
variable result: integer := 0;
begin
result := ( phase_shift * 360 ) / clk_period;
-- to round up the calculation result
if (result > 0) then
result := result + 1;
elsif (result < 0) then
result := result - 1;
else
result := 0;
end if;
return result;
end;
-- find the number of VCO clock cycles to wait initially before the first rising
-- edge of the output clock
function counter_initial (tap_phase: integer; m: integer; n: integer)
return integer is
variable R: integer;
variable R1: real;
begin
R1 := (real(abs(tap_phase)) * real(m))/(360.0 * real(n)) + 0.6;
-- Note NCSim VHDL had problem in rounding up for 0.5 - 0.99.
-- This checking will ensure that the rounding up is done.
if (R1 >= 0.5) and (R1 <= 1.0) then
R1 := 1.0;
end if;
R := integer(R1);
return R;
end;
-- find which VCO phase tap (0 to 7) to align the rising edge of the output clock to
function counter_ph (tap_phase: integer; m: integer; n: integer) return integer is
variable R: integer := 0;
begin
-- 0.5 is added for proper rounding of the tap_phase.
R := integer(real(integer(real(tap_phase * m / n)+ 0.5) REM 360)/45.0) rem 8;
return R;
end;
-- convert given string to length 6 by padding with spaces
function translate_string (mode : string) return string is
variable new_mode : string (1 to 6) := " ";
begin
if (mode = "bypass") then
new_mode := "bypass";
elsif (mode = "even") then
new_mode := " even";
elsif (mode = "odd") then
new_mode := " odd";
end if;
return new_mode;
end;
function str2int (s : string) return integer is
variable len : integer := s'length;
variable newdigit : integer := 0;
variable sign : integer := 1;
variable digit : integer := 0;
begin
for i in 1 to len loop
case s(i) is
when '-' =>
if i = 1 then
sign := -1;
else
ASSERT FALSE
REPORT "Illegal Character "& s(i) & "i n string parameter! "
SEVERITY ERROR;
end if;
when '0' =>
digit := 0;
when '1' =>
digit := 1;
when '2' =>
digit := 2;
when '3' =>
digit := 3;
when '4' =>
digit := 4;
when '5' =>
digit := 5;
when '6' =>
digit := 6;
when '7' =>
digit := 7;
when '8' =>
digit := 8;
when '9' =>
digit := 9;
when others =>
ASSERT FALSE
REPORT "Illegal Character "& s(i) & "in string parameter! "
SEVERITY ERROR;
end case;
newdigit := newdigit * 10 + digit;
end loop;
return (sign*newdigit);
end;
function dqs_str2int (s : string) return integer is
variable len : integer := s'length;
variable newdigit : integer := 0;
variable sign : integer := 1;
variable digit : integer := 0;
variable err : boolean := false;
begin
for i in 1 to len loop
case s(i) is
when '-' =>
if i = 1 then
sign := -1;
else
ASSERT FALSE
REPORT "Illegal Character "& s(i) & " in string parameter! "
SEVERITY ERROR;
err := true;
end if;
when '0' =>
digit := 0;
when '1' =>
digit := 1;
when '2' =>
digit := 2;
when '3' =>
digit := 3;
when '4' =>
digit := 4;
when '5' =>
digit := 5;
when '6' =>
digit := 6;
when '7' =>
digit := 7;
when '8' =>
digit := 8;
when '9' =>
digit := 9;
when others =>
-- set error flag
err := true;
end case;
if (err) then
err := false;
else
newdigit := newdigit * 10 + digit;
end if;
end loop;
return (sign*newdigit);
end;
end cyclonev_pllpack;
--
--
-- DFFE Model
--
--
LIBRARY IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
entity cyclonev_dffe is
generic(
TimingChecksOn: Boolean := True;
XOn: Boolean := DefGlitchXOn;
MsgOn: Boolean := DefGlitchMsgOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*";
tpd_PRN_Q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_CLRN_Q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_CLK_Q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_ENA_Q_posedge : VitalDelayType01 := DefPropDelay01;
tsetup_D_CLK_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_D_CLK_noedge_negedge : VitalDelayType := DefSetupHoldCnst;
tsetup_ENA_CLK_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_D_CLK_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_D_CLK_noedge_negedge : VitalDelayType := DefSetupHoldCnst;
thold_ENA_CLK_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tipd_D : VitalDelayType01 := DefPropDelay01;
tipd_CLRN : VitalDelayType01 := DefPropDelay01;
tipd_PRN : VitalDelayType01 := DefPropDelay01;
tipd_CLK : VitalDelayType01 := DefPropDelay01;
tipd_ENA : VitalDelayType01 := DefPropDelay01);
port(
Q : out STD_LOGIC := '0';
D : in STD_LOGIC;
CLRN : in STD_LOGIC;
PRN : in STD_LOGIC;
CLK : in STD_LOGIC;
ENA : in STD_LOGIC);
attribute VITAL_LEVEL0 of cyclonev_dffe : entity is TRUE;
end cyclonev_dffe;
-- architecture body --
architecture behave of cyclonev_dffe is
attribute VITAL_LEVEL0 of behave : architecture is TRUE;
signal D_ipd : STD_ULOGIC := 'U';
signal CLRN_ipd : STD_ULOGIC := 'U';
signal PRN_ipd : STD_ULOGIC := 'U';
signal CLK_ipd : STD_ULOGIC := 'U';
signal ENA_ipd : STD_ULOGIC := 'U';
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (D_ipd, D, tipd_D);
VitalWireDelay (CLRN_ipd, CLRN, tipd_CLRN);
VitalWireDelay (PRN_ipd, PRN, tipd_PRN);
VitalWireDelay (CLK_ipd, CLK, tipd_CLK);
VitalWireDelay (ENA_ipd, ENA, tipd_ENA);
end block;
--------------------
-- BEHAVIOR SECTION
--------------------
VITALBehavior : process (D_ipd, CLRN_ipd, PRN_ipd, CLK_ipd, ENA_ipd)
-- timing check results
VARIABLE Tviol_D_CLK : STD_ULOGIC := '0';
VARIABLE Tviol_ENA_CLK : STD_ULOGIC := '0';
VARIABLE TimingData_D_CLK : VitalTimingDataType := VitalTimingDataInit;
VARIABLE TimingData_ENA_CLK : VitalTimingDataType := VitalTimingDataInit;
-- functionality results
VARIABLE Violation : STD_ULOGIC := '0';
VARIABLE PrevData_Q : STD_LOGIC_VECTOR(0 to 7);
VARIABLE D_delayed : STD_ULOGIC := 'U';
VARIABLE CLK_delayed : STD_ULOGIC := 'U';
VARIABLE ENA_delayed : STD_ULOGIC := 'U';
VARIABLE Results : STD_LOGIC_VECTOR(1 to 1) := (others => '0');
-- output glitch detection variables
VARIABLE Q_VitalGlitchData : VitalGlitchDataType;
CONSTANT dffe_Q_tab : VitalStateTableType := (
( L, L, x, x, x, x, x, x, x, L ),
( L, H, L, H, H, x, x, H, x, H ),
( L, H, L, H, x, L, x, H, x, H ),
( L, H, L, x, H, H, x, H, x, H ),
( L, H, H, x, x, x, H, x, x, S ),
( L, H, x, x, x, x, L, x, x, H ),
( L, H, x, x, x, x, H, L, x, S ),
( L, x, L, L, L, x, H, H, x, L ),
( L, x, L, L, x, L, H, H, x, L ),
( L, x, L, x, L, H, H, H, x, L ),
( L, x, x, x, x, x, x, x, x, S ));
begin
------------------------
-- Timing Check Section
------------------------
if (TimingChecksOn) then
VitalSetupHoldCheck (
Violation => Tviol_D_CLK,
TimingData => TimingData_D_CLK,
TestSignal => D_ipd,
TestSignalName => "D",
RefSignal => CLK_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_D_CLK_noedge_posedge,
SetupLow => tsetup_D_CLK_noedge_posedge,
HoldHigh => thold_D_CLK_noedge_posedge,
HoldLow => thold_D_CLK_noedge_posedge,
CheckEnabled => TO_X01(( (NOT PRN_ipd) ) OR ( (NOT CLRN_ipd) ) OR ( (NOT ENA_ipd) )) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/DFFE",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
VitalSetupHoldCheck (
Violation => Tviol_ENA_CLK,
TimingData => TimingData_ENA_CLK,
TestSignal => ENA_ipd,
TestSignalName => "ENA",
RefSignal => CLK_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_ENA_CLK_noedge_posedge,
SetupLow => tsetup_ENA_CLK_noedge_posedge,
HoldHigh => thold_ENA_CLK_noedge_posedge,
HoldLow => thold_ENA_CLK_noedge_posedge,
CheckEnabled => TO_X01(( (NOT PRN_ipd) ) OR ( (NOT CLRN_ipd) ) ) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/DFFE",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
end if;
-------------------------
-- Functionality Section
-------------------------
Violation := Tviol_D_CLK or Tviol_ENA_CLK;
VitalStateTable(
StateTable => dffe_Q_tab,
DataIn => (
Violation, CLRN_ipd, CLK_delayed, Results(1), D_delayed, ENA_delayed, PRN_ipd, CLK_ipd),
Result => Results,
NumStates => 1,
PreviousDataIn => PrevData_Q);
D_delayed := D_ipd;
CLK_delayed := CLK_ipd;
ENA_delayed := ENA_ipd;
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => Q,
OutSignalName => "Q",
OutTemp => Results(1),
Paths => ( 0 => (PRN_ipd'last_event, tpd_PRN_Q_negedge, TRUE),
1 => (CLRN_ipd'last_event, tpd_CLRN_Q_negedge, TRUE),
2 => (CLK_ipd'last_event, tpd_CLK_Q_posedge, TRUE)),
GlitchData => Q_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end behave;
--
--
-- cyclonev_mux21 Model
--
--
LIBRARY IEEE;
use ieee.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use work.cyclonev_atom_pack.all;
entity cyclonev_mux21 is
generic(
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
InstancePath: STRING := "*";
tpd_A_MO : VitalDelayType01 := DefPropDelay01;
tpd_B_MO : VitalDelayType01 := DefPropDelay01;
tpd_S_MO : VitalDelayType01 := DefPropDelay01;
tipd_A : VitalDelayType01 := DefPropDelay01;
tipd_B : VitalDelayType01 := DefPropDelay01;
tipd_S : VitalDelayType01 := DefPropDelay01);
port (
A : in std_logic := '0';
B : in std_logic := '0';
S : in std_logic := '0';
MO : out std_logic);
attribute VITAL_LEVEL0 of cyclonev_mux21 : entity is TRUE;
end cyclonev_mux21;
architecture AltVITAL of cyclonev_mux21 is
attribute VITAL_LEVEL0 of AltVITAL : architecture is TRUE;
signal A_ipd, B_ipd, S_ipd : std_logic;
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (A_ipd, A, tipd_A);
VitalWireDelay (B_ipd, B, tipd_B);
VitalWireDelay (S_ipd, S, tipd_S);
end block;
--------------------
-- BEHAVIOR SECTION
--------------------
VITALBehavior : process (A_ipd, B_ipd, S_ipd)
-- output glitch detection variables
VARIABLE MO_GlitchData : VitalGlitchDataType;
variable tmp_MO : std_logic;
begin
-------------------------
-- Functionality Section
-------------------------
if (S_ipd = '1') then
tmp_MO := B_ipd;
else
tmp_MO := A_ipd;
end if;
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => MO,
OutSignalName => "MO",
OutTemp => tmp_MO,
Paths => ( 0 => (A_ipd'last_event, tpd_A_MO, TRUE),
1 => (B_ipd'last_event, tpd_B_MO, TRUE),
2 => (S_ipd'last_event, tpd_S_MO, TRUE)),
GlitchData => MO_GlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end AltVITAL;
--
--
-- cyclonev_mux41 Model
--
--
LIBRARY IEEE;
use ieee.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use work.cyclonev_atom_pack.all;
entity cyclonev_mux41 is
generic(
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
InstancePath: STRING := "*";
tpd_IN0_MO : VitalDelayType01 := DefPropDelay01;
tpd_IN1_MO : VitalDelayType01 := DefPropDelay01;
tpd_IN2_MO : VitalDelayType01 := DefPropDelay01;
tpd_IN3_MO : VitalDelayType01 := DefPropDelay01;
tpd_S_MO : VitalDelayArrayType01(1 downto 0) := (OTHERS => DefPropDelay01);
tipd_IN0 : VitalDelayType01 := DefPropDelay01;
tipd_IN1 : VitalDelayType01 := DefPropDelay01;
tipd_IN2 : VitalDelayType01 := DefPropDelay01;
tipd_IN3 : VitalDelayType01 := DefPropDelay01;
tipd_S : VitalDelayArrayType01(1 downto 0) := (OTHERS => DefPropDelay01)
);
port (
IN0 : in std_logic := '0';
IN1 : in std_logic := '0';
IN2 : in std_logic := '0';
IN3 : in std_logic := '0';
S : in std_logic_vector(1 downto 0) := (OTHERS => '0');
MO : out std_logic
);
attribute VITAL_LEVEL0 of cyclonev_mux41 : entity is TRUE;
end cyclonev_mux41;
architecture AltVITAL of cyclonev_mux41 is
attribute VITAL_LEVEL0 of AltVITAL : architecture is TRUE;
signal IN0_ipd, IN1_ipd, IN2_ipd, IN3_ipd : std_logic;
signal S_ipd : std_logic_vector(1 downto 0);
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (IN0_ipd, IN0, tipd_IN0);
VitalWireDelay (IN1_ipd, IN1, tipd_IN1);
VitalWireDelay (IN2_ipd, IN2, tipd_IN2);
VitalWireDelay (IN3_ipd, IN3, tipd_IN3);
VitalWireDelay (S_ipd(0), S(0), tipd_S(0));
VitalWireDelay (S_ipd(1), S(1), tipd_S(1));
end block;
--------------------
-- BEHAVIOR SECTION
--------------------
VITALBehavior : process (IN0_ipd, IN1_ipd, IN2_ipd, IN3_ipd, S_ipd(0), S_ipd(1))
-- output glitch detection variables
VARIABLE MO_GlitchData : VitalGlitchDataType;
variable tmp_MO : std_logic;
begin
-------------------------
-- Functionality Section
-------------------------
if ((S_ipd(1) = '1') AND (S_ipd(0) = '1')) then
tmp_MO := IN3_ipd;
elsif ((S_ipd(1) = '1') AND (S_ipd(0) = '0')) then
tmp_MO := IN2_ipd;
elsif ((S_ipd(1) = '0') AND (S_ipd(0) = '1')) then
tmp_MO := IN1_ipd;
else
tmp_MO := IN0_ipd;
end if;
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => MO,
OutSignalName => "MO",
OutTemp => tmp_MO,
Paths => ( 0 => (IN0_ipd'last_event, tpd_IN0_MO, TRUE),
1 => (IN1_ipd'last_event, tpd_IN1_MO, TRUE),
2 => (IN2_ipd'last_event, tpd_IN2_MO, TRUE),
3 => (IN3_ipd'last_event, tpd_IN3_MO, TRUE),
4 => (S_ipd(0)'last_event, tpd_S_MO(0), TRUE),
5 => (S_ipd(1)'last_event, tpd_S_MO(1), TRUE)),
GlitchData => MO_GlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end AltVITAL;
--
--
-- cyclonev_and1 Model
--
--
LIBRARY IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.VITAL_Timing.all;
use work.cyclonev_atom_pack.all;
-- entity declaration --
entity cyclonev_and1 is
generic(
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
InstancePath: STRING := "*";
tpd_IN1_Y : VitalDelayType01 := DefPropDelay01;
tipd_IN1 : VitalDelayType01 := DefPropDelay01);
port(
Y : out STD_LOGIC;
IN1 : in STD_LOGIC);
attribute VITAL_LEVEL0 of cyclonev_and1 : entity is TRUE;
end cyclonev_and1;
-- architecture body --
architecture AltVITAL of cyclonev_and1 is
attribute VITAL_LEVEL0 of AltVITAL : architecture is TRUE;
SIGNAL IN1_ipd : STD_ULOGIC := 'U';
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (IN1_ipd, IN1, tipd_IN1);
end block;
--------------------
-- BEHAVIOR SECTION
--------------------
VITALBehavior : process (IN1_ipd)
-- functionality results
VARIABLE Results : STD_LOGIC_VECTOR(1 to 1) := (others => 'X');
ALIAS Y_zd : STD_ULOGIC is Results(1);
-- output glitch detection variables
VARIABLE Y_GlitchData : VitalGlitchDataType;
begin
-------------------------
-- Functionality Section
-------------------------
Y_zd := TO_X01(IN1_ipd);
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => Y,
OutSignalName => "Y",
OutTemp => Y_zd,
Paths => (0 => (IN1_ipd'last_event, tpd_IN1_Y, TRUE)),
GlitchData => Y_GlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end AltVITAL;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_ff
--
-- Description : CycloneV FF VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
use work.cyclonev_and1;
entity cyclonev_ff is
generic (
power_up : string := "low";
x_on_violation : string := "on";
lpm_type : string := "cyclonev_ff";
tsetup_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tpd_clk_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_clrn_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_aload_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_asdata_q: VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_d : VitalDelayType01 := DefPropDelay01;
tipd_asdata : VitalDelayType01 := DefPropDelay01;
tipd_sclr : VitalDelayType01 := DefPropDelay01;
tipd_sload : VitalDelayType01 := DefPropDelay01;
tipd_clrn : VitalDelayType01 := DefPropDelay01;
tipd_aload : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*"
);
port (
d : in std_logic := '0';
clk : in std_logic := '0';
clrn : in std_logic := '1';
aload : in std_logic := '0';
sclr : in std_logic := '0';
sload : in std_logic := '0';
ena : in std_logic := '1';
asdata : in std_logic := '0';
devclrn : in std_logic := '1';
devpor : in std_logic := '1';
q : out std_logic
);
attribute VITAL_LEVEL0 of cyclonev_ff : entity is TRUE;
end cyclonev_ff;
architecture vital_lcell_ff of cyclonev_ff is
attribute VITAL_LEVEL0 of vital_lcell_ff : architecture is TRUE;
signal clk_ipd : std_logic;
signal d_ipd : std_logic;
signal d_dly : std_logic;
signal asdata_ipd : std_logic;
signal asdata_dly : std_logic;
signal asdata_dly1 : std_logic;
signal sclr_ipd : std_logic;
signal sload_ipd : std_logic;
signal clrn_ipd : std_logic;
signal aload_ipd : std_logic;
signal ena_ipd : std_logic;
component cyclonev_and1
generic (XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
tpd_IN1_Y : VitalDelayType01 := DefPropDelay01;
tipd_IN1 : VitalDelayType01 := DefPropDelay01
);
port (Y : out STD_LOGIC;
IN1 : in STD_LOGIC
);
end component;
begin
ddelaybuffer: cyclonev_and1
port map(IN1 => d_ipd,
Y => d_dly);
asdatadelaybuffer: cyclonev_and1
port map(IN1 => asdata_ipd,
Y => asdata_dly);
asdatadelaybuffer1: cyclonev_and1
port map(IN1 => asdata_dly,
Y => asdata_dly1);
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (clk_ipd, clk, tipd_clk);
VitalWireDelay (d_ipd, d, tipd_d);
VitalWireDelay (asdata_ipd, asdata, tipd_asdata);
VitalWireDelay (sclr_ipd, sclr, tipd_sclr);
VitalWireDelay (sload_ipd, sload, tipd_sload);
VitalWireDelay (clrn_ipd, clrn, tipd_clrn);
VitalWireDelay (aload_ipd, aload, tipd_aload);
VitalWireDelay (ena_ipd, ena, tipd_ena);
end block;
VITALtiming : process (clk_ipd, d_dly, asdata_dly1,
sclr_ipd, sload_ipd, clrn_ipd, aload_ipd,
ena_ipd, devclrn, devpor)
variable Tviol_d_clk : std_ulogic := '0';
variable Tviol_asdata_clk : std_ulogic := '0';
variable Tviol_sclr_clk : std_ulogic := '0';
variable Tviol_sload_clk : std_ulogic := '0';
variable Tviol_ena_clk : std_ulogic := '0';
variable TimingData_d_clk : VitalTimingDataType := VitalTimingDataInit;
variable TimingData_asdata_clk : VitalTimingDataType := VitalTimingDataInit;
variable TimingData_sclr_clk : VitalTimingDataType := VitalTimingDataInit;
variable TimingData_sload_clk : VitalTimingDataType := VitalTimingDataInit;
variable TimingData_ena_clk : VitalTimingDataType := VitalTimingDataInit;
variable q_VitalGlitchData : VitalGlitchDataType;
variable iq : std_logic := '0';
variable idata: std_logic := '0';
-- variables for 'X' generation
variable violation : std_logic := '0';
begin
if (now = 0 ns) then
if (power_up = "low") then
iq := '0';
elsif (power_up = "high") then
iq := '1';
end if;
end if;
------------------------
-- Timing Check Section
------------------------
if (TimingChecksOn) then
VitalSetupHoldCheck (
Violation => Tviol_d_clk,
TimingData => TimingData_d_clk,
TestSignal => d,
TestSignalName => "DATAIN",
RefSignal => clk_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_d_clk_noedge_posedge,
SetupLow => tsetup_d_clk_noedge_posedge,
HoldHigh => thold_d_clk_noedge_posedge,
HoldLow => thold_d_clk_noedge_posedge,
CheckEnabled => TO_X01((NOT clrn_ipd) OR
(sload_ipd) OR
(sclr_ipd) OR
(NOT devpor) OR
(NOT devclrn) OR
(NOT ena_ipd)) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/LCELL_FF",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
VitalSetupHoldCheck (
Violation => Tviol_asdata_clk,
TimingData => TimingData_asdata_clk,
TestSignal => asdata_ipd,
TestSignalName => "ASDATA",
RefSignal => clk_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_asdata_clk_noedge_posedge,
SetupLow => tsetup_asdata_clk_noedge_posedge,
HoldHigh => thold_asdata_clk_noedge_posedge,
HoldLow => thold_asdata_clk_noedge_posedge,
CheckEnabled => TO_X01((NOT clrn_ipd) OR
(NOT sload_ipd) OR
(NOT devpor) OR
(NOT devclrn) OR
(NOT ena_ipd)) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/LCELL_FF",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
VitalSetupHoldCheck (
Violation => Tviol_sclr_clk,
TimingData => TimingData_sclr_clk,
TestSignal => sclr_ipd,
TestSignalName => "SCLR",
RefSignal => clk_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_sclr_clk_noedge_posedge,
SetupLow => tsetup_sclr_clk_noedge_posedge,
HoldHigh => thold_sclr_clk_noedge_posedge,
HoldLow => thold_sclr_clk_noedge_posedge,
CheckEnabled => TO_X01((NOT clrn_ipd) OR
(NOT devpor) OR
(NOT devclrn) OR
(NOT ena_ipd)) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/LCELL_FF",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
VitalSetupHoldCheck (
Violation => Tviol_sload_clk,
TimingData => TimingData_sload_clk,
TestSignal => sload_ipd,
TestSignalName => "SLOAD",
RefSignal => clk_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_sload_clk_noedge_posedge,
SetupLow => tsetup_sload_clk_noedge_posedge,
HoldHigh => thold_sload_clk_noedge_posedge,
HoldLow => thold_sload_clk_noedge_posedge,
CheckEnabled => TO_X01((NOT clrn_ipd) OR
(NOT devpor) OR
(NOT devclrn) OR
(NOT ena_ipd)) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/LCELL_FF",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
VitalSetupHoldCheck (
Violation => Tviol_ena_clk,
TimingData => TimingData_ena_clk,
TestSignal => ena_ipd,
TestSignalName => "ENA",
RefSignal => clk_ipd,
RefSignalName => "CLK",
SetupHigh => tsetup_ena_clk_noedge_posedge,
SetupLow => tsetup_ena_clk_noedge_posedge,
HoldHigh => thold_ena_clk_noedge_posedge,
HoldLow => thold_ena_clk_noedge_posedge,
CheckEnabled => TO_X01((NOT clrn_ipd) OR
(NOT devpor) OR
(NOT devclrn) ) /= '1',
RefTransition => '/',
HeaderMsg => InstancePath & "/LCELL_FF",
XOn => XOnChecks,
MsgOn => MsgOnChecks );
end if;
violation := Tviol_d_clk or Tviol_asdata_clk or
Tviol_sclr_clk or Tviol_sload_clk or Tviol_ena_clk;
if ((devpor = '0') or (devclrn = '0') or (clrn_ipd = '0')) then
iq := '0';
elsif (aload_ipd = '1') then
iq := asdata_dly1;
elsif (violation = 'X' and x_on_violation = "on") then
iq := 'X';
elsif clk_ipd'event and clk_ipd = '1' and clk_ipd'last_value = '0' then
if (ena_ipd = '1') then
if (sclr_ipd = '1') then
iq := '0';
elsif (sload_ipd = '1') then
iq := asdata_dly1;
else
iq := d_dly;
end if;
end if;
end if;
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => q,
OutSignalName => "Q",
OutTemp => iq,
Paths => (0 => (clrn_ipd'last_event, tpd_clrn_q_posedge, TRUE),
1 => (aload_ipd'last_event, tpd_aload_q_posedge, TRUE),
2 => (asdata_ipd'last_event, tpd_asdata_q, TRUE),
3 => (clk_ipd'last_event, tpd_clk_q_posedge, TRUE)),
GlitchData => q_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end vital_lcell_ff;
----------------------------------------------------------------------------------
--Module Name: cyclonev_pseudo_diff_out --
--Description: Simulation model for Stratix V Pseudo Differential --
-- Output Buffer --
----------------------------------------------------------------------------------
LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_pseudo_diff_out IS
GENERIC (
tipd_i : VitalDelayType01 := DefPropDelay01;
tpd_i_o : VitalDelayType01 := DefPropDelay01;
tpd_i_obar : VitalDelayType01 := DefPropDelay01;
tipd_oein : VitalDelayType01 := DefPropDelay01;
tpd_oein_oeout : VitalDelayType01 := DefPropDelay01;
tpd_oein_oebout : VitalDelayType01 := DefPropDelay01;
tipd_dtcin : VitalDelayType01 := DefPropDelay01;
tpd_dtcin_dtc : VitalDelayType01 := DefPropDelay01;
tpd_dtcin_dtcbar : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
lpm_type : string := "stratuxv_pseudo_diff_out"
);
PORT (
i : IN std_logic := '0';
o : OUT std_logic;
obar : OUT std_logic;
dtcin : in std_logic := '0';
oein : in std_logic := '0';
dtc : OUT std_logic;
dtcbar : OUT std_logic;
oeout : OUT std_logic;
oebout : OUT std_logic
);
END cyclonev_pseudo_diff_out;
ARCHITECTURE arch OF cyclonev_pseudo_diff_out IS
SIGNAL i_ipd : std_logic ;
SIGNAL o_tmp : std_logic ;
SIGNAL obar_tmp : std_logic;
SIGNAL dtcin_ipd : std_logic ;
SIGNAL dtc_tmp : std_logic ;
SIGNAL dtcbar_tmp : std_logic;
SIGNAL oein_ipd : std_logic ;
SIGNAL oeout_tmp : std_logic ;
SIGNAL oebout_tmp : std_logic;
BEGIN
WireDelay : block
begin
VitalWireDelay (i_ipd, i, tipd_i);
end block;
PROCESS( i_ipd)
BEGIN
IF (i_ipd = '0') THEN
o_tmp <= '0';
obar_tmp <= '1';
ELSE
IF (i_ipd = '1') THEN
o_tmp <= '1';
obar_tmp <= '0';
ELSE
o_tmp <= i_ipd;
obar_tmp <= i_ipd;
END IF;
END IF;
END PROCESS;
---------------------
-- Path Delay Section
----------------------
PROCESS( o_tmp,obar_tmp)
variable o_VitalGlitchData : VitalGlitchDataType;
variable obar_VitalGlitchData : VitalGlitchDataType;
BEGIN
VitalPathDelay01 (
OutSignal => o,
OutSignalName => "o",
OutTemp => o_tmp,
Paths => (0 => (i_ipd'last_event, tpd_i_o, TRUE)),
GlitchData => o_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
VitalPathDelay01 (
OutSignal => obar,
OutSignalName => "obar",
OutTemp => obar_tmp,
Paths => (0 => (i_ipd'last_event, tpd_i_obar, TRUE)),
GlitchData => obar_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
END PROCESS;
-- oe
WireDelay_OE : block
begin
VitalWireDelay (oein_ipd, oein, tipd_oein);
end block;
PROCESS( oein_ipd)
BEGIN
IF (oein_ipd = '0') THEN
oeout_tmp <= '0';
oebout_tmp <= '0';
ELSE
IF (oein_ipd = '1') THEN
oeout_tmp <= '1';
oebout_tmp <= '1';
ELSE
oeout_tmp <= oein_ipd;
oebout_tmp <= oein_ipd;
END IF;
END IF;
END PROCESS;
---------------------
-- Path Delay Section
----------------------
PROCESS( oeout_tmp,oebout_tmp)
variable o_VitalGlitchData : VitalGlitchDataType;
variable obar_VitalGlitchData : VitalGlitchDataType;
BEGIN
VitalPathDelay01 (
OutSignal => oeout,
OutSignalName => "oeout",
OutTemp => oeout_tmp,
Paths => (0 => (oein_ipd'last_event, tpd_oein_oeout, TRUE)),
GlitchData => o_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
VitalPathDelay01 (
OutSignal => oebout,
OutSignalName => "oebout",
OutTemp => oebout_tmp,
Paths => (0 => (oein_ipd'last_event, tpd_oein_oebout, TRUE)),
GlitchData => obar_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
END PROCESS;
-- dtc
WireDelay_DTC : block
begin
VitalWireDelay (dtcin_ipd, dtcin, tipd_dtcin);
end block;
PROCESS( dtcin_ipd)
BEGIN
IF (dtcin_ipd = '0') THEN
dtc_tmp <= '0';
dtcbar_tmp <= '0';
ELSE
IF (dtcin_ipd = '1') THEN
dtc_tmp <= '1';
dtcbar_tmp <= '1';
ELSE
dtc_tmp <= dtcin_ipd;
dtcbar_tmp <= dtcin_ipd;
END IF;
END IF;
END PROCESS;
---------------------
-- Path Delay Section
----------------------
PROCESS( dtc_tmp,dtcbar_tmp)
variable o_VitalGlitchData : VitalGlitchDataType;
variable dtcbar_VitalGlitchData : VitalGlitchDataType;
BEGIN
VitalPathDelay01 (
OutSignal => dtc,
OutSignalName => "dtc",
OutTemp => dtc_tmp,
Paths => (0 => (dtcin_ipd'last_event, tpd_dtcin_dtc, TRUE)),
GlitchData => o_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
VitalPathDelay01 (
OutSignal => dtcbar,
OutSignalName => "dtcbar",
OutTemp => dtcbar_tmp,
Paths => (0 => (dtcin_ipd'last_event, tpd_dtcin_dtcbar, TRUE)),
GlitchData => dtcbar_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
END PROCESS;
END arch;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_lcell_comb
--
-- Description : CYCLONEV LCELL_COMB VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
entity cyclonev_lcell_comb is
generic (
lut_mask : std_logic_vector(63 downto 0) := (OTHERS => '1');
shared_arith : string := "off";
extended_lut : string := "off";
dont_touch : string := "off";
lpm_type : string := "cyclonev_lcell_comb";
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*";
tpd_dataa_combout : VitalDelayType01 := DefPropDelay01;
tpd_datab_combout : VitalDelayType01 := DefPropDelay01;
tpd_datac_combout : VitalDelayType01 := DefPropDelay01;
tpd_datad_combout : VitalDelayType01 := DefPropDelay01;
tpd_datae_combout : VitalDelayType01 := DefPropDelay01;
tpd_dataf_combout : VitalDelayType01 := DefPropDelay01;
tpd_datag_combout : VitalDelayType01 := DefPropDelay01;
tpd_dataa_sumout : VitalDelayType01 := DefPropDelay01;
tpd_datab_sumout : VitalDelayType01 := DefPropDelay01;
tpd_datac_sumout : VitalDelayType01 := DefPropDelay01;
tpd_datad_sumout : VitalDelayType01 := DefPropDelay01;
tpd_dataf_sumout : VitalDelayType01 := DefPropDelay01;
tpd_cin_sumout : VitalDelayType01 := DefPropDelay01;
tpd_sharein_sumout : VitalDelayType01 := DefPropDelay01;
tpd_dataa_cout : VitalDelayType01 := DefPropDelay01;
tpd_datab_cout : VitalDelayType01 := DefPropDelay01;
tpd_datac_cout : VitalDelayType01 := DefPropDelay01;
tpd_datad_cout : VitalDelayType01 := DefPropDelay01;
tpd_dataf_cout : VitalDelayType01 := DefPropDelay01;
tpd_cin_cout : VitalDelayType01 := DefPropDelay01;
tpd_sharein_cout : VitalDelayType01 := DefPropDelay01;
tpd_dataa_shareout : VitalDelayType01 := DefPropDelay01;
tpd_datab_shareout : VitalDelayType01 := DefPropDelay01;
tpd_datac_shareout : VitalDelayType01 := DefPropDelay01;
tpd_datad_shareout : VitalDelayType01 := DefPropDelay01;
tipd_dataa : VitalDelayType01 := DefPropDelay01;
tipd_datab : VitalDelayType01 := DefPropDelay01;
tipd_datac : VitalDelayType01 := DefPropDelay01;
tipd_datad : VitalDelayType01 := DefPropDelay01;
tipd_datae : VitalDelayType01 := DefPropDelay01;
tipd_dataf : VitalDelayType01 := DefPropDelay01;
tipd_datag : VitalDelayType01 := DefPropDelay01;
tipd_cin : VitalDelayType01 := DefPropDelay01;
tipd_sharein : VitalDelayType01 := DefPropDelay01
);
port (
dataa : in std_logic := '0';
datab : in std_logic := '0';
datac : in std_logic := '0';
datad : in std_logic := '0';
datae : in std_logic := '0';
dataf : in std_logic := '0';
datag : in std_logic := '0';
cin : in std_logic := '0';
sharein : in std_logic := '0';
combout : out std_logic;
sumout : out std_logic;
cout : out std_logic;
shareout : out std_logic
);
attribute VITAL_LEVEL0 of cyclonev_lcell_comb : entity is TRUE;
end cyclonev_lcell_comb;
architecture vital_lcell_comb of cyclonev_lcell_comb is
attribute VITAL_LEVEL0 of vital_lcell_comb : architecture is TRUE;
signal dataa_ipd : std_logic;
signal datab_ipd : std_logic;
signal datac_ipd : std_logic;
signal datad_ipd : std_logic;
signal datae_ipd : std_logic;
signal dataf_ipd : std_logic;
signal datag_ipd : std_logic;
signal cin_ipd : std_logic;
signal sharein_ipd : std_logic;
signal f2_input3 : std_logic;
-- sub masks
signal f0_mask : std_logic_vector(15 downto 0);
signal f1_mask : std_logic_vector(15 downto 0);
signal f2_mask : std_logic_vector(15 downto 0);
signal f3_mask : std_logic_vector(15 downto 0);
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (dataa_ipd, dataa, tipd_dataa);
VitalWireDelay (datab_ipd, datab, tipd_datab);
VitalWireDelay (datac_ipd, datac, tipd_datac);
VitalWireDelay (datad_ipd, datad, tipd_datad);
VitalWireDelay (datae_ipd, datae, tipd_datae);
VitalWireDelay (dataf_ipd, dataf, tipd_dataf);
VitalWireDelay (datag_ipd, datag, tipd_datag);
VitalWireDelay (cin_ipd, cin, tipd_cin);
VitalWireDelay (sharein_ipd, sharein, tipd_sharein);
end block;
f0_mask <= lut_mask(15 downto 0);
f1_mask <= lut_mask(31 downto 16);
f2_mask <= lut_mask(47 downto 32);
f3_mask <= lut_mask(63 downto 48);
f2_input3 <= datag_ipd WHEN (extended_lut = "on") ELSE datac_ipd;
VITALtiming : process(dataa_ipd, datab_ipd, datac_ipd, datad_ipd,
datae_ipd, dataf_ipd, f2_input3, cin_ipd,
sharein_ipd)
variable combout_VitalGlitchData : VitalGlitchDataType;
variable sumout_VitalGlitchData : VitalGlitchDataType;
variable cout_VitalGlitchData : VitalGlitchDataType;
variable shareout_VitalGlitchData : VitalGlitchDataType;
-- sub lut outputs
variable f0_out : std_logic;
variable f1_out : std_logic;
variable f2_out : std_logic;
variable f3_out : std_logic;
-- muxed output
variable g0_out : std_logic;
variable g1_out : std_logic;
-- internal variables
variable f2_f : std_logic;
variable adder_input2 : std_logic;
-- output variables
variable combout_tmp : std_logic;
variable sumout_tmp : std_logic;
variable cout_tmp : std_logic;
-- temp variable for NCVHDL
variable lut_mask_var : std_logic_vector(63 downto 0) := (OTHERS => '1');
begin
lut_mask_var := lut_mask;
------------------------
-- Timing Check Section
------------------------
f0_out := VitalMUX(data => f0_mask,
dselect => (datad_ipd,
datac_ipd,
datab_ipd,
dataa_ipd));
f1_out := VitalMUX(data => f1_mask,
dselect => (datad_ipd,
f2_input3,
datab_ipd,
dataa_ipd));
f2_out := VitalMUX(data => f2_mask,
dselect => (datad_ipd,
datac_ipd,
datab_ipd,
dataa_ipd));
f3_out := VitalMUX(data => f3_mask,
dselect => (datad_ipd,
f2_input3,
datab_ipd,
dataa_ipd));
-- combout
if (extended_lut = "on") then
if (datae_ipd = '0') then
g0_out := f0_out;
g1_out := f2_out;
elsif (datae_ipd = '1') then
g0_out := f1_out;
g1_out := f3_out;
else
g0_out := 'X';
g1_out := 'X';
end if;
if (dataf_ipd = '0') then
combout_tmp := g0_out;
elsif ((dataf_ipd = '1') or (g0_out = g1_out))then
combout_tmp := g1_out;
else
combout_tmp := 'X';
end if;
else
combout_tmp := VitalMUX(data => lut_mask_var,
dselect => (dataf_ipd,
datae_ipd,
datad_ipd,
datac_ipd,
datab_ipd,
dataa_ipd));
end if;
-- sumout and cout
f2_f := VitalMUX(data => f2_mask,
dselect => (dataf_ipd,
datac_ipd,
datab_ipd,
dataa_ipd));
if (shared_arith = "on") then
adder_input2 := sharein_ipd;
else
adder_input2 := NOT f2_f;
end if;
sumout_tmp := cin_ipd XOR f0_out XOR adder_input2;
cout_tmp := (cin_ipd AND f0_out) OR (cin_ipd AND adder_input2) OR
(f0_out AND adder_input2);
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => combout,
OutSignalName => "COMBOUT",
OutTemp => combout_tmp,
Paths => (0 => (dataa_ipd'last_event, tpd_dataa_combout, TRUE),
1 => (datab_ipd'last_event, tpd_datab_combout, TRUE),
2 => (datac_ipd'last_event, tpd_datac_combout, TRUE),
3 => (datad_ipd'last_event, tpd_datad_combout, TRUE),
4 => (datae_ipd'last_event, tpd_datae_combout, TRUE),
5 => (dataf_ipd'last_event, tpd_dataf_combout, TRUE),
6 => (datag_ipd'last_event, tpd_datag_combout, TRUE)),
GlitchData => combout_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
VitalPathDelay01 (
OutSignal => sumout,
OutSignalName => "SUMOUT",
OutTemp => sumout_tmp,
Paths => (0 => (dataa_ipd'last_event, tpd_dataa_sumout, TRUE),
1 => (datab_ipd'last_event, tpd_datab_sumout, TRUE),
2 => (datac_ipd'last_event, tpd_datac_sumout, TRUE),
3 => (datad_ipd'last_event, tpd_datad_sumout, TRUE),
4 => (dataf_ipd'last_event, tpd_dataf_sumout, TRUE),
5 => (cin_ipd'last_event, tpd_cin_sumout, TRUE),
6 => (sharein_ipd'last_event, tpd_sharein_sumout, TRUE)),
GlitchData => sumout_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
VitalPathDelay01 (
OutSignal => cout,
OutSignalName => "COUT",
OutTemp => cout_tmp,
Paths => (0 => (dataa_ipd'last_event, tpd_dataa_cout, TRUE),
1 => (datab_ipd'last_event, tpd_datab_cout, TRUE),
2 => (datac_ipd'last_event, tpd_datac_cout, TRUE),
3 => (datad_ipd'last_event, tpd_datad_cout, TRUE),
4 => (dataf_ipd'last_event, tpd_dataf_cout, TRUE),
5 => (cin_ipd'last_event, tpd_cin_cout, TRUE),
6 => (sharein_ipd'last_event, tpd_sharein_cout, TRUE)),
GlitchData => cout_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
VitalPathDelay01 (
OutSignal => shareout,
OutSignalName => "SHAREOUT",
OutTemp => f2_out,
Paths => (0 => (dataa_ipd'last_event, tpd_dataa_shareout, TRUE),
1 => (datab_ipd'last_event, tpd_datab_shareout, TRUE),
2 => (datac_ipd'last_event, tpd_datac_shareout, TRUE),
3 => (datad_ipd'last_event, tpd_datad_shareout, TRUE)),
GlitchData => shareout_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end vital_lcell_comb;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_routing_wire
--
-- Description : CycloneV Routing Wire VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_routing_wire is
generic (
MsgOn : Boolean := DefGlitchMsgOn;
XOn : Boolean := DefGlitchXOn;
tpd_datain_dataout : VitalDelayType01 := DefPropDelay01;
tpd_datainglitch_dataout : VitalDelayType01 := DefPropDelay01;
tipd_datain : VitalDelayType01 := DefPropDelay01
);
PORT (
datain : in std_logic;
dataout : out std_logic
);
attribute VITAL_LEVEL0 of cyclonev_routing_wire : entity is TRUE;
end cyclonev_routing_wire;
ARCHITECTURE behave of cyclonev_routing_wire is
attribute VITAL_LEVEL0 of behave : architecture is TRUE;
signal datain_ipd : std_logic;
signal datainglitch_inert : std_logic;
begin
---------------------
-- INPUT PATH DELAYs
---------------------
WireDelay : block
begin
VitalWireDelay (datain_ipd, datain, tipd_datain);
end block;
VITAL: process(datain_ipd, datainglitch_inert)
variable datain_inert_VitalGlitchData : VitalGlitchDataType;
variable dataout_VitalGlitchData : VitalGlitchDataType;
begin
----------------------
-- Path Delay Section
----------------------
VitalPathDelay01 (
OutSignal => datainglitch_inert,
OutSignalName => "datainglitch_inert",
OutTemp => datain_ipd,
Paths => (1 => (datain_ipd'last_event, tpd_datainglitch_dataout, TRUE)),
GlitchData => datain_inert_VitalGlitchData,
Mode => VitalInertial,
XOn => XOn,
MsgOn => MsgOn );
VitalPathDelay01 (
OutSignal => dataout,
OutSignalName => "dataout",
OutTemp => datainglitch_inert,
Paths => (1 => (datain_ipd'last_event, tpd_datain_dataout, TRUE)),
GlitchData => dataout_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn );
end process;
end behave;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
LIBRARY altera_lnsim;
use altera_lnsim.altera_lnsim_components.all;
ENTITY cyclonev_ram_block IS
GENERIC (
-- -------- GLOBAL PARAMETERS ---------
operation_mode : STRING := "single_port";
mixed_port_feed_through_mode : STRING := "dont_care";
ram_block_type : STRING := "auto";
logical_ram_name : STRING := "ram_name";
init_file : STRING := "init_file.hex";
init_file_layout : STRING := "none";
ecc_pipeline_stage_enabled : STRING := "false";
enable_ecc : STRING := "false";
width_eccstatus : INTEGER := 2;
data_interleave_width_in_bits : INTEGER := 1;
data_interleave_offset_in_bits : INTEGER := 1;
port_a_logical_ram_depth : INTEGER := 0;
port_a_logical_ram_width : INTEGER := 0;
port_a_first_address : INTEGER := 0;
port_a_last_address : INTEGER := 0;
port_a_first_bit_number : INTEGER := 0;
bist_ena : STRING := "false";
port_a_address_clear : STRING := "none";
port_a_data_out_clear : STRING := "none";
port_a_data_in_clock : STRING := "clock0";
port_a_address_clock : STRING := "clock0";
port_a_write_enable_clock : STRING := "clock0";
port_a_read_enable_clock : STRING := "clock0";
port_a_byte_enable_clock : STRING := "clock0";
port_a_data_out_clock : STRING := "none";
port_a_data_width : INTEGER := 1;
port_a_address_width : INTEGER := 1;
port_a_byte_enable_mask_width : INTEGER := 1;
port_b_logical_ram_depth : INTEGER := 0;
port_b_logical_ram_width : INTEGER := 0;
port_b_first_address : INTEGER := 0;
port_b_last_address : INTEGER := 0;
port_b_first_bit_number : INTEGER := 0;
port_b_address_clear : STRING := "none";
port_b_data_out_clear : STRING := "none";
port_b_data_in_clock : STRING := "clock1";
port_b_address_clock : STRING := "clock1";
port_b_write_enable_clock: STRING := "clock1";
port_b_read_enable_clock: STRING := "clock1";
port_b_byte_enable_clock : STRING := "clock1";
port_b_data_out_clock : STRING := "none";
port_b_data_width : INTEGER := 1;
port_b_address_width : INTEGER := 1;
port_b_byte_enable_mask_width : INTEGER := 1;
port_a_read_during_write_mode : STRING := "new_data_no_nbe_read";
port_b_read_during_write_mode : STRING := "new_data_no_nbe_read";
power_up_uninitialized : STRING := "false";
port_b_byte_size : INTEGER := 0;
port_a_byte_size : INTEGER := 0;
lpm_type : string := "cyclonev_ram_block";
lpm_hint : string := "true";
clk0_input_clock_enable : STRING := "none"; -- ena0,ena2,none
clk0_core_clock_enable : STRING := "none"; -- ena0,ena2,none
clk0_output_clock_enable : STRING := "none"; -- ena0,none
clk1_input_clock_enable : STRING := "none"; -- ena1,ena3,none
clk1_core_clock_enable : STRING := "none"; -- ena1,ena3,none
clk1_output_clock_enable : STRING := "none"; -- ena1,none
mem_init0 : STRING := "";
mem_init1 : STRING := "";
mem_init2 : STRING := "";
mem_init3 : STRING := "";
mem_init4 : STRING := "";
connectivity_checking : string := "off"
);
-- -------- PORT DECLARATIONS ---------
PORT (
portadatain : IN STD_LOGIC_VECTOR(port_a_data_width - 1 DOWNTO 0) := (OTHERS => '0');
portaaddr : IN STD_LOGIC_VECTOR(port_a_address_width - 1 DOWNTO 0) := (OTHERS => '0');
portawe : IN STD_LOGIC := '0';
portare : IN STD_LOGIC := '1';
portbdatain : IN STD_LOGIC_VECTOR(port_b_data_width - 1 DOWNTO 0) := (OTHERS => '0');
portbaddr : IN STD_LOGIC_VECTOR(port_b_address_width - 1 DOWNTO 0) := (OTHERS => '0');
portbwe : IN STD_LOGIC := '0';
portbre : IN STD_LOGIC := '1';
clk0 : IN STD_LOGIC := '0';
clk1 : IN STD_LOGIC := '0';
ena0 : IN STD_LOGIC := '1';
ena1 : IN STD_LOGIC := '1';
ena2 : IN STD_LOGIC := '1';
ena3 : IN STD_LOGIC := '1';
clr0 : IN STD_LOGIC := '0';
clr1 : IN STD_LOGIC := '0';
nerror : IN STD_LOGIC := '1';
portabyteenamasks : IN STD_LOGIC_VECTOR(port_a_byte_enable_mask_width - 1 DOWNTO 0) := (OTHERS => '1');
portbbyteenamasks : IN STD_LOGIC_VECTOR(port_b_byte_enable_mask_width - 1 DOWNTO 0) := (OTHERS => '1');
devclrn : IN STD_LOGIC := '1';
devpor : IN STD_LOGIC := '1';
portaaddrstall : IN STD_LOGIC := '0';
portbaddrstall : IN STD_LOGIC := '0';
eccstatus : OUT STD_LOGIC_VECTOR(width_eccstatus - 1 DOWNTO 0) := (OTHERS => '0');
dftout : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) := "000000000";
portadataout : OUT STD_LOGIC_VECTOR(port_a_data_width - 1 DOWNTO 0);
portbdataout : OUT STD_LOGIC_VECTOR(port_b_data_width - 1 DOWNTO 0)
);
END cyclonev_ram_block;
ARCHITECTURE block_arch OF cyclonev_ram_block IS
BEGIN
inst : generic_m10k
generic map (
operation_mode => operation_mode,
mixed_port_feed_through_mode => mixed_port_feed_through_mode,
ram_block_type => ram_block_type,
logical_ram_name => logical_ram_name,
init_file => init_file,
init_file_layout => init_file_layout,
ecc_pipeline_stage_enabled => ecc_pipeline_stage_enabled,
enable_ecc => enable_ecc,
width_eccstatus => width_eccstatus,
data_interleave_width_in_bits => data_interleave_width_in_bits,
data_interleave_offset_in_bits => data_interleave_offset_in_bits,
port_a_logical_ram_depth => port_a_logical_ram_depth,
port_a_logical_ram_width => port_a_logical_ram_width,
port_a_first_address => port_a_first_address,
port_a_last_address => port_a_last_address,
port_a_first_bit_number => port_a_first_bit_number,
port_a_data_out_clear => port_a_data_out_clear,
port_a_data_out_clock => port_a_data_out_clock,
port_a_data_width => port_a_data_width,
port_a_address_width => port_a_address_width,
port_a_byte_enable_mask_width => port_a_byte_enable_mask_width,
port_b_logical_ram_depth => port_b_logical_ram_depth,
port_b_logical_ram_width => port_b_logical_ram_width,
port_b_first_address => port_b_first_address,
port_b_last_address => port_b_last_address,
port_b_first_bit_number => port_b_first_bit_number,
port_b_address_clear => port_b_address_clear,
port_b_data_out_clear => port_b_data_out_clear,
port_b_data_in_clock => port_b_data_in_clock,
port_b_address_clock => port_b_address_clock,
port_b_write_enable_clock => port_b_write_enable_clock,
port_b_read_enable_clock => port_b_read_enable_clock,
port_b_byte_enable_clock => port_b_byte_enable_clock,
port_b_data_out_clock => port_b_data_out_clock,
port_b_data_width => port_b_data_width,
port_b_address_width => port_b_address_width,
port_b_byte_enable_mask_width => port_b_byte_enable_mask_width,
port_a_read_during_write_mode => port_a_read_during_write_mode,
port_b_read_during_write_mode => port_b_read_during_write_mode,
power_up_uninitialized => power_up_uninitialized,
lpm_type => lpm_type,
lpm_hint => lpm_hint,
connectivity_checking => connectivity_checking,
mem_init0 => mem_init0,
mem_init1 => mem_init1,
mem_init2 => mem_init2,
mem_init3 => mem_init3,
mem_init4 => mem_init4,
port_a_byte_size => port_a_byte_size,
port_b_byte_size => port_b_byte_size,
clk0_input_clock_enable => clk0_input_clock_enable,
clk0_core_clock_enable => clk0_core_clock_enable,
clk0_output_clock_enable => clk0_output_clock_enable,
clk1_input_clock_enable => clk1_input_clock_enable,
clk1_core_clock_enable => clk1_core_clock_enable,
clk1_output_clock_enable => clk1_output_clock_enable,
bist_ena => bist_ena,
port_a_address_clear => port_a_address_clear,
port_a_data_in_clock => port_a_data_in_clock,
port_a_address_clock => port_a_address_clock,
port_a_write_enable_clock => port_a_write_enable_clock,
port_a_byte_enable_clock => port_a_byte_enable_clock,
port_a_read_enable_clock => port_a_read_enable_clock
)
port map (
portadatain => portadatain ,
portaaddr => portaaddr ,
portawe => portawe ,
portare => portare ,
portbdatain => portbdatain ,
portbaddr => portbaddr ,
portbwe => portbwe ,
portbre => portbre ,
clk0 => clk0 ,
clk1 => clk1 ,
ena0 => ena0 ,
ena1 => ena1 ,
ena2 => ena2 ,
ena3 => ena3 ,
clr0 => clr0 ,
clr1 => clr1 ,
nerror => nerror ,
portabyteenamasks => portabyteenamasks,
portbbyteenamasks => portbbyteenamasks,
portaaddrstall => portaaddrstall ,
portbaddrstall => portbaddrstall ,
devclrn => devclrn ,
devpor => devpor ,
eccstatus => eccstatus ,
portadataout => portadataout ,
portbdataout => portbdataout ,
dftout => dftout
);
END block_arch;
----------------------------------------------------------------------------
-- Entity Name : cyclonev_mlab_cell
-- Description : LUTRAM VHDL Simulation Model
----------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
USE work.cyclonev_atom_pack.all;
LIBRARY altera_lnsim;
use altera_lnsim.altera_lnsim_components.all;
ENTITY cyclonev_mlab_cell IS
GENERIC (
-- -------- GLOBAL PARAMETERS ---------
logical_ram_name : STRING := "lutram";
logical_ram_depth : INTEGER := 0;
logical_ram_width : INTEGER := 0;
first_address : INTEGER := 0;
last_address : INTEGER := 0;
first_bit_number : INTEGER := 0;
init_file : STRING := "NONE";
data_width : INTEGER := 20;
address_width : INTEGER := 5;
byte_enable_mask_width : INTEGER := 1;
byte_size : INTEGER := 1;
port_b_data_out_clock : STRING := "none";
port_b_data_out_clear : STRING := "none";
lpm_type : STRING := "cyclonev_mlab_cell";
lpm_hint : STRING := "true";
mem_init0 : STRING := "";
mixed_port_feed_through_mode : STRING := "new"
);
PORT (
-- -------- PORT DECLARATIONS ---------
portadatain : IN STD_LOGIC_VECTOR(data_width - 1 DOWNTO 0) := (others => '0');
portaaddr : IN STD_LOGIC_VECTOR(address_width - 1 DOWNTO 0) := (others => '0');
portabyteenamasks : IN STD_LOGIC_VECTOR(byte_enable_mask_width - 1 DOWNTO 0) := (others => '1');
portbaddr : IN STD_LOGIC_VECTOR(address_width - 1 DOWNTO 0) := (others => '0');
clk0 : IN STD_LOGIC := '0';
clk1 : IN STD_LOGIC := '0';
ena0 : IN STD_LOGIC := '1';
ena1 : IN STD_LOGIC := '1';
ena2 : IN STD_LOGIC := '1';
clr : IN STD_LOGIC := '0';
devclrn : IN STD_LOGIC := '1';
devpor : IN STD_LOGIC := '1';
portbdataout : OUT STD_LOGIC_VECTOR(data_width - 1 DOWNTO 0)
);
END cyclonev_mlab_cell;
ARCHITECTURE trans OF cyclonev_mlab_cell IS
BEGIN
inst : generic_28nm_lc_mlab_cell_impl
generic map (
logical_ram_name => logical_ram_name ,
logical_ram_depth => logical_ram_depth ,
logical_ram_width => logical_ram_width ,
first_address => first_address ,
last_address => last_address ,
first_bit_number => first_bit_number ,
init_file => init_file ,
data_width => data_width ,
address_width => address_width ,
byte_enable_mask_width => byte_enable_mask_width ,
byte_size => byte_size ,
port_b_data_out_clock => port_b_data_out_clock ,
port_b_data_out_clear => port_b_data_out_clear ,
lpm_type => lpm_type ,
lpm_hint => lpm_hint ,
mem_init0 => mem_init0 ,
mixed_port_feed_through_mode => mixed_port_feed_through_mode
)
port map (
portadatain => portadatain ,
portaaddr => portaaddr ,
portabyteenamasks => portabyteenamasks ,
portbaddr => portbaddr ,
clk0 => clk0 ,
clk1 => clk1 ,
ena0 => ena0 ,
ena1 => ena1 ,
ena2 => ena2 ,
clr => clr ,
devclrn => devclrn ,
devpor => devpor ,
portbdataout => portbdataout
);
END trans;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_io_ibuf
--
-- Description : CycloneV IO Ibuf VHDL simulation model
--
--
---------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_io_ibuf IS
GENERIC (
tipd_i : VitalDelayType01 := DefPropDelay01;
tipd_ibar : VitalDelayType01 := DefPropDelay01;
tipd_dynamicterminationcontrol : VitalDelayType01 := DefPropDelay01;
tpd_i_o : VitalDelayType01 := DefPropDelay01;
tpd_ibar_o : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
differential_mode : string := "false";
bus_hold : string := "false";
simulate_z_as : string := "Z";
lpm_type : string := "cyclonev_io_ibuf"
);
PORT (
i : IN std_logic := '0';
ibar : IN std_logic := '0';
dynamicterminationcontrol : IN std_logic := '0';
o : OUT std_logic
);
END cyclonev_io_ibuf;
ARCHITECTURE arch OF cyclonev_io_ibuf IS
SIGNAL i_ipd : std_logic := '0';
SIGNAL ibar_ipd : std_logic := '0';
SIGNAL o_tmp : std_logic;
SIGNAL out_tmp : std_logic;
SIGNAL prev_value : std_logic := '0';
BEGIN
WireDelay : block
begin
VitalWireDelay (i_ipd, i, tipd_i);
VitalWireDelay (ibar_ipd, ibar, tipd_ibar);
end block;
PROCESS(i_ipd, ibar_ipd)
BEGIN
IF (differential_mode = "false") THEN
IF (i_ipd = '1') THEN
o_tmp <= '1';
prev_value <= '1';
ELSIF (i_ipd = '0') THEN
o_tmp <= '0';
prev_value <= '0';
ELSE
o_tmp <= i_ipd;
END IF;
ELSE
IF (( i_ipd = '0' ) and (ibar_ipd = '1')) then
o_tmp <= '0';
ELSIF (( i_ipd = '1' ) and (ibar_ipd = '0')) then
o_tmp <= '1';
ELSIF((( i_ipd = '1' ) and (ibar_ipd = '1')) or (( i_ipd = '0' ) and (ibar_ipd = '0')))then
o_tmp <= 'X';
ELSE
o_tmp <= 'X';
END IF;
END IF;
END PROCESS;
out_tmp <= prev_value when (bus_hold = "true") else
'Z' when((o_tmp = 'Z') AND (simulate_z_as = "Z")) else
'X' when((o_tmp = 'Z') AND (simulate_z_as = "X")) else
'1' when((o_tmp = 'Z') AND (simulate_z_as = "vcc")) else
'0' when((o_tmp = 'Z') AND (simulate_z_as = "gnd")) else
o_tmp;
----------------------
-- Path Delay Section
----------------------
PROCESS( out_tmp)
variable output_VitalGlitchData : VitalGlitchDataType;
BEGIN
VitalPathDelay01 (
OutSignal => o,
OutSignalName => "o",
OutTemp => out_tmp,
Paths => (0 => (i_ipd'last_event, tpd_i_o, TRUE),
1 => (ibar_ipd'last_event, tpd_ibar_o, TRUE)),
GlitchData => output_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
END PROCESS;
END arch;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_io_obuf
--
-- Description : CycloneV IO Obuf VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_io_obuf IS
GENERIC (
tipd_i : VitalDelayType01 := DefPropDelay01;
tipd_oe : VitalDelayType01 := DefPropDelay01;
tipd_dynamicterminationcontrol : VitalDelayType01 := DefPropDelay01;
tipd_seriesterminationcontrol : VitalDelayArrayType01(15 DOWNTO 0) := (others => DefPropDelay01 );
tipd_parallelterminationcontrol : VitalDelayArrayType01(15 DOWNTO 0) := (others => DefPropDelay01 );
tpd_i_o : VitalDelayType01 := DefPropDelay01;
tpd_oe_o : VitalDelayType01 := DefPropDelay01;
tpd_i_obar : VitalDelayType01 := DefPropDelay01;
tpd_oe_obar : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
open_drain_output : string := "false";
shift_series_termination_control : string := "false";
sim_dynamic_termination_control_is_connected : string := "false";
bus_hold : string := "false";
lpm_type : string := "cyclonev_io_obuf"
);
PORT (
i : IN std_logic := '0';
oe : IN std_logic := '1';
dynamicterminationcontrol : IN std_logic := '0';
seriesterminationcontrol : IN std_logic_vector(15 DOWNTO 0) := (others => '0');
parallelterminationcontrol : IN std_logic_vector(15 DOWNTO 0) := (others => '0');
devoe : IN std_logic := '1';
o : OUT std_logic;
obar : OUT std_logic
);
END cyclonev_io_obuf;
ARCHITECTURE arch OF cyclonev_io_obuf IS
--INTERNAL Signals
SIGNAL i_ipd : std_logic := '0';
SIGNAL oe_ipd : std_logic := '0';
SIGNAL dynamicterminationcontrol_ipd : std_logic := '0';
SIGNAL out_tmp : std_logic := 'Z';
SIGNAL out_tmp_bar : std_logic;
SIGNAL prev_value : std_logic := '0';
SIGNAL o_tmp : std_logic;
SIGNAL obar_tmp : std_logic;
SIGNAL o_tmp1 : std_logic;
SIGNAL obar_tmp1 : std_logic;
SIGNAL seriesterminationcontrol_ipd : std_logic_vector(15 DOWNTO 0) := (others => '0');
SIGNAL parallelterminationcontrol_ipd : std_logic_vector(15 DOWNTO 0) := (others => '0');
BEGIN
WireDelay : block
begin
VitalWireDelay (i_ipd, i, tipd_i);
VitalWireDelay (oe_ipd, oe, tipd_oe);
VitalWireDelay (dynamicterminationcontrol_ipd, dynamicterminationcontrol, tipd_dynamicterminationcontrol);
g1 :for i in seriesterminationcontrol'range generate
VitalWireDelay (seriesterminationcontrol_ipd(i), seriesterminationcontrol(i), tipd_seriesterminationcontrol(i));
end generate;
g2 :for i in parallelterminationcontrol'range generate
VitalWireDelay (parallelterminationcontrol_ipd(i), parallelterminationcontrol(i), tipd_parallelterminationcontrol(i));
end generate;
end block;
PROCESS( i_ipd, oe_ipd)
BEGIN
IF (oe_ipd = '1') THEN
IF (open_drain_output = "true") THEN
IF (i_ipd = '0') THEN
out_tmp <= '0';
out_tmp_bar <= '1';
prev_value <= '0';
ELSE
out_tmp <= 'Z';
out_tmp_bar <= 'Z';
END IF;
ELSE
IF (i_ipd = '0') THEN
out_tmp <= '0';
out_tmp_bar <= '1';
prev_value <= '0';
ELSE
IF (i_ipd = '1') THEN
out_tmp <= '1';
out_tmp_bar <= '0';
prev_value <= '1';
ELSE
out_tmp <= i_ipd;
out_tmp_bar <= i_ipd;
END IF;
END IF;
END IF;
ELSE
IF (oe_ipd = '0') THEN
out_tmp <= 'Z';
out_tmp_bar <= 'Z';
ELSE
out_tmp <= 'X';
out_tmp_bar <= 'X';
END IF;
END IF;
END PROCESS;
o_tmp1 <= prev_value WHEN (bus_hold = "true") ELSE out_tmp;
obar_tmp1 <= NOT prev_value WHEN (bus_hold = "true") ELSE out_tmp_bar;
o_tmp <= 'X' when (( oe_ipd = '1') and (dynamicterminationcontrol = '1')) else o_tmp1 WHEN (devoe = '1') ELSE 'Z';
obar_tmp <= 'X' when (( oe_ipd = '1') and (dynamicterminationcontrol = '1')) else obar_tmp1 WHEN (devoe = '1') ELSE 'Z';
---------------------
-- Path Delay Section
----------------------
PROCESS( o_tmp,obar_tmp)
variable o_VitalGlitchData : VitalGlitchDataType;
variable obar_VitalGlitchData : VitalGlitchDataType;
BEGIN
VitalPathDelay01 (
OutSignal => o,
OutSignalName => "o",
OutTemp => o_tmp,
Paths => (0 => (i_ipd'last_event, tpd_i_o, TRUE),
1 => (oe_ipd'last_event, tpd_oe_o, TRUE)),
GlitchData => o_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
VitalPathDelay01 (
OutSignal => obar,
OutSignalName => "obar",
OutTemp => obar_tmp,
Paths => (0 => (i_ipd'last_event, tpd_i_obar, TRUE),
1 => (oe_ipd'last_event, tpd_oe_obar, TRUE)),
GlitchData => obar_VitalGlitchData,
Mode => DefGlitchMode,
XOn => XOn,
MsgOn => MsgOn
);
END PROCESS;
END arch;
-----------------------------------------------------------------------
--
-- Entity Name : cyclonev_ddio_in
--
-- Description : CycloneV DDIO_IN VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
LIBRARY altera;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use altera.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_ddio_in IS
generic(
tipd_datain : VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_clkn : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
tipd_areset : VitalDelayType01 := DefPropDelay01;
tipd_sreset : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
power_up : string := "low";
async_mode : string := "none";
sync_mode : string := "none";
use_clkn : string := "false";
lpm_type : string := "cyclonev_ddio_in"
);
PORT (
datain : IN std_logic := '0';
clk : IN std_logic := '0';
clkn : IN std_logic := '0';
ena : IN std_logic := '1';
areset : IN std_logic := '0';
sreset : IN std_logic := '0';
regoutlo : OUT std_logic;
regouthi : OUT std_logic;
dfflo : OUT std_logic;
devclrn : IN std_logic := '1';
devpor : IN std_logic := '1'
);
END cyclonev_ddio_in;
ARCHITECTURE arch OF cyclonev_ddio_in IS
component dffeas
generic (
power_up : string := "DONT_CARE";
is_wysiwyg : string := "false";
x_on_violation : string := "on";
lpm_type : string := "DFFEAS";
tsetup_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tpd_clk_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_clrn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_prn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_aload_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_asdata_q: VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_d : VitalDelayType01 := DefPropDelay01;
tipd_asdata : VitalDelayType01 := DefPropDelay01;
tipd_sclr : VitalDelayType01 := DefPropDelay01;
tipd_sload : VitalDelayType01 := DefPropDelay01;
tipd_clrn : VitalDelayType01 := DefPropDelay01;
tipd_prn : VitalDelayType01 := DefPropDelay01;
tipd_aload : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*"
);
port (
d : in std_logic := '0';
clk : in std_logic := '0';
ena : in std_logic := '1';
clrn : in std_logic := '1';
prn : in std_logic := '1';
aload : in std_logic := '0';
asdata : in std_logic := '1';
sclr : in std_logic := '0';
sload : in std_logic := '0';
devclrn : in std_logic := '1';
devpor : in std_logic := '1';
q : out std_logic
);
end component;
--Internal Signals
SIGNAL datain_ipd : std_logic := '0';
SIGNAL clk_ipd : std_logic := '0';
SIGNAL clkn_ipd : std_logic := '0';
SIGNAL ena_ipd : std_logic := '0';
SIGNAL areset_ipd : std_logic := '0';
SIGNAL sreset_ipd : std_logic := '0';
SIGNAL ddioreg_aclr : std_logic;
SIGNAL ddioreg_prn : std_logic;
SIGNAL ddioreg_adatasdata : std_logic;
SIGNAL ddioreg_sclr : std_logic;
SIGNAL ddioreg_sload : std_logic;
SIGNAL ddioreg_clk : std_logic;
SIGNAL dfflo_tmp : std_logic;
SIGNAL regout_tmp_hi : std_logic;
SIGNAL regout_tmp_lo : std_logic;
SIGNAL regouthi_tmp : std_logic;
SIGNAL regoutlo_tmp : std_logic;
BEGIN
WireDelay : block
begin
VitalWireDelay (datain_ipd, datain, tipd_datain);
VitalWireDelay (clk_ipd, clk, tipd_clk);
VitalWireDelay (clkn_ipd, clkn, tipd_clkn);
VitalWireDelay (ena_ipd, ena, tipd_ena);
VitalWireDelay (areset_ipd, areset, tipd_areset);
VitalWireDelay (sreset_ipd, sreset, tipd_sreset);
end block;
ddioreg_clk <= NOT clk_ipd WHEN (use_clkn = "false") ELSE clkn_ipd;
--Decode the control values for the DDIO registers
PROCESS
BEGIN
WAIT UNTIL areset_ipd'EVENT OR sreset_ipd'EVENT;
IF (async_mode = "clear") THEN
ddioreg_aclr <= NOT areset_ipd;
ddioreg_prn <= '1';
ELSIF (async_mode = "preset") THEN
ddioreg_aclr <= '1';
ddioreg_prn <= NOT areset_ipd;
ELSE
ddioreg_aclr <= '1';
ddioreg_prn <= '1';
END IF;
IF (sync_mode = "clear") THEN
ddioreg_adatasdata <= '0';
ddioreg_sclr <= sreset_ipd;
ddioreg_sload <= '0';
ELSIF (sync_mode = "preset") THEN
ddioreg_adatasdata <= '1';
ddioreg_sclr <= '0';
ddioreg_sload <= sreset_ipd;
ELSE
ddioreg_adatasdata <= '0';
ddioreg_sclr <= '0';
ddioreg_sload <= '0';
END IF;
END PROCESS;
--DDIO High Register
ddioreg_hi : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => datain_ipd,
clk => clk_ipd,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => regout_tmp_hi,
devpor => devpor,
devclrn => devclrn
);
--DDIO Low Register
ddioreg_lo : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => datain_ipd,
clk => ddioreg_clk,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => dfflo_tmp,
devpor => devpor,
devclrn => devclrn
);
ddioreg_lo1 : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => dfflo_tmp,
clk => clk_ipd,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => regout_tmp_lo,
devpor => devpor,
devclrn => devclrn
);
regouthi <= regout_tmp_hi ;
regoutlo <= regout_tmp_lo ;
dfflo <= dfflo_tmp ;
END arch;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_ddio_oe
--
-- Description : CycloneV DDIO_OE VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
LIBRARY altera;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use altera.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_ddio_oe IS
generic(
tipd_oe : VitalDelayType01 := DefPropDelay01;
tipd_octreadcontrol : VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
tipd_areset : VitalDelayType01 := DefPropDelay01;
tipd_sreset : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
power_up : string := "low";
async_mode : string := "none";
sync_mode : string := "none";
disable_second_level_register : string := "false";
lpm_type : string := "cyclonev_ddio_oe"
);
PORT (
oe : IN std_logic := '1';
octreadcontrol : IN std_logic := '1';
clk : IN std_logic := '0';
ena : IN std_logic := '1';
areset : IN std_logic := '0';
sreset : IN std_logic := '0';
dataout : OUT std_logic;
dfflo : OUT std_logic;
dffhi : OUT std_logic;
devclrn : IN std_logic := '1';
devpor : IN std_logic := '1'
);
END cyclonev_ddio_oe;
ARCHITECTURE arch OF cyclonev_ddio_oe IS
component cyclonev_mux21
generic(
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
InstancePath: STRING := "*";
tpd_A_MO : VitalDelayType01 := DefPropDelay01;
tpd_B_MO : VitalDelayType01 := DefPropDelay01;
tpd_S_MO : VitalDelayType01 := DefPropDelay01;
tipd_A : VitalDelayType01 := DefPropDelay01;
tipd_B : VitalDelayType01 := DefPropDelay01;
tipd_S : VitalDelayType01 := DefPropDelay01
);
port (
A : in std_logic := '0';
B : in std_logic := '0';
S : in std_logic := '0';
MO : out std_logic
);
end component;
component dffeas
generic (
power_up : string := "DONT_CARE";
is_wysiwyg : string := "false";
x_on_violation : string := "on";
lpm_type : string := "DFFEAS";
tsetup_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tpd_clk_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_clrn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_prn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_aload_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_asdata_q: VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_d : VitalDelayType01 := DefPropDelay01;
tipd_asdata : VitalDelayType01 := DefPropDelay01;
tipd_sclr : VitalDelayType01 := DefPropDelay01;
tipd_sload : VitalDelayType01 := DefPropDelay01;
tipd_clrn : VitalDelayType01 := DefPropDelay01;
tipd_prn : VitalDelayType01 := DefPropDelay01;
tipd_aload : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*"
);
port (
d : in std_logic := '0';
clk : in std_logic := '0';
ena : in std_logic := '1';
clrn : in std_logic := '1';
prn : in std_logic := '1';
aload : in std_logic := '0';
asdata : in std_logic := '1';
sclr : in std_logic := '0';
sload : in std_logic := '0';
devclrn : in std_logic := '1';
devpor : in std_logic := '1';
q : out std_logic
);
end component;
--Internal Signals
SIGNAL oe_ipd : std_logic := '0';
SIGNAL octreadcontrol_ipd : std_logic := '0';
SIGNAL clk_ipd : std_logic := '0';
SIGNAL ena_ipd : std_logic := '0';
SIGNAL areset_ipd : std_logic := '0';
SIGNAL sreset_ipd : std_logic := '0';
SIGNAL ddioreg_aclr : std_logic;
SIGNAL ddioreg_prn : std_logic;
SIGNAL ddioreg_adatasdata : std_logic;
SIGNAL ddioreg_sclr : std_logic;
SIGNAL ddioreg_sload : std_logic;
SIGNAL dfflo_tmp : std_logic;
SIGNAL dffhi_tmp : std_logic;
signal nclk : std_logic;
signal dataout_tmp : std_logic;
signal oe_octreadcontrol_tmp : std_logic;
signal second_level_register_tmp : std_logic;
BEGIN
WireDelay : block
begin
VitalWireDelay (oe_ipd, oe, tipd_oe);
VitalWireDelay (octreadcontrol_ipd, octreadcontrol, tipd_octreadcontrol);
VitalWireDelay (clk_ipd, clk, tipd_clk);
VitalWireDelay (ena_ipd, ena, tipd_ena);
VitalWireDelay (areset_ipd, areset, tipd_areset);
VitalWireDelay (sreset_ipd, sreset, tipd_sreset);
end block;
nclk <= NOT clk_ipd;
PROCESS
BEGIN
WAIT UNTIL areset_ipd'EVENT OR sreset_ipd'EVENT;
IF (async_mode = "clear") THEN
ddioreg_aclr <= NOT areset_ipd;
ddioreg_prn <= '1';
ELSIF (async_mode = "preset") THEN
ddioreg_aclr <= '1';
ddioreg_prn <= NOT areset_ipd;
ELSE
ddioreg_aclr <= '1';
ddioreg_prn <= '1';
END IF;
IF (sync_mode = "clear") THEN
ddioreg_adatasdata <= '0';
ddioreg_sclr <= sreset_ipd;
ddioreg_sload <= '0';
ELSIF (sync_mode = "preset") THEN
ddioreg_adatasdata <= '1';
ddioreg_sclr <= '0';
ddioreg_sload <= sreset_ipd;
ELSE
ddioreg_adatasdata <= '0';
ddioreg_sclr <= '0';
ddioreg_sload <= '0';
END IF;
END PROCESS;
ddioreg_hi : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => oe_octreadcontrol_tmp,
clk => clk_ipd,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => dffhi_tmp,
devpor => devpor,
devclrn => devclrn
);
--DDIO Low Register
second_level_register_tmp <= dffhi_tmp when(disable_second_level_register = "false") else '0';
ddioreg_lo : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => second_level_register_tmp,
clk => nclk,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => dfflo_tmp,
devpor => devpor,
devclrn => devclrn
);
--registered output
or_gate : cyclonev_mux21
port map (
A => dffhi_tmp,
B => dfflo_tmp,
S => dfflo_tmp,
MO => dataout
);
dfflo <= dfflo_tmp ;
dffhi <= dffhi_tmp ;
oe_octreadcontrol_tmp <= '1' when (octreadcontrol_ipd = '1' and oe_ipd = '1') else '0';
END arch;
---------------------------------------------------------------------
--
-- Entity Name : cyclonev_ddio_out
--
-- Description : CycloneV DDIO_OUT VHDL simulation model
--
--
---------------------------------------------------------------------
LIBRARY IEEE;
LIBRARY altera;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use altera.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_ddio_out IS
generic(
tipd_datainlo : VitalDelayType01 := DefPropDelay01;
tipd_datainhi : VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_clkhi : VitalDelayType01 := DefPropDelay01;
tipd_clklo : VitalDelayType01 := DefPropDelay01;
tipd_muxsel : VitalDelayType01 := DefPropDelay01;
tipd_hrbsel : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
tipd_areset : VitalDelayType01 := DefPropDelay01;
tipd_sreset : VitalDelayType01 := DefPropDelay01;
XOn : Boolean := DefGlitchXOn;
MsgOn : Boolean := DefGlitchMsgOn;
power_up : string := "low";
async_mode : string := "none";
sync_mode : string := "none";
half_rate_mode : string := "false";
use_new_clocking_model : string := "false";
lpm_type : string := "cyclonev_ddio_out"
);
PORT (
datainlo : IN std_logic := '0';
datainhi : IN std_logic := '0';
clk : IN std_logic := '0';
clkhi : IN std_logic := '0';
clklo : IN std_logic := '0';
muxsel : IN std_logic := '0';
ena : IN std_logic := '1';
areset : IN std_logic := '0';
sreset : IN std_logic := '0';
dataout : OUT std_logic;
dfflo : OUT std_logic;
dffhi : OUT std_logic;
hrbypass : IN std_logic := '0';
devclrn : IN std_logic := '1';
devpor : IN std_logic := '1'
);
END cyclonev_ddio_out;
ARCHITECTURE arch OF cyclonev_ddio_out IS
component cyclonev_mux21
generic(
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
InstancePath: STRING := "*";
tpd_A_MO : VitalDelayType01 := DefPropDelay01;
tpd_B_MO : VitalDelayType01 := DefPropDelay01;
tpd_S_MO : VitalDelayType01 := DefPropDelay01;
tipd_A : VitalDelayType01 := DefPropDelay01;
tipd_B : VitalDelayType01 := DefPropDelay01;
tipd_S : VitalDelayType01 := DefPropDelay01
);
port (
A : in std_logic := '0';
B : in std_logic := '0';
S : in std_logic := '0';
MO : out std_logic
);
end component;
component dffeas
generic (
power_up : string := "DONT_CARE";
is_wysiwyg : string := "false";
x_on_violation : string := "on";
lpm_type : string := "DFFEAS";
tsetup_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_d_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_asdata_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sclr_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_sload_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_ena_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tpd_clk_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_clrn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_prn_q_negedge : VitalDelayType01 := DefPropDelay01;
tpd_aload_q_posedge : VitalDelayType01 := DefPropDelay01;
tpd_asdata_q: VitalDelayType01 := DefPropDelay01;
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_d : VitalDelayType01 := DefPropDelay01;
tipd_asdata : VitalDelayType01 := DefPropDelay01;
tipd_sclr : VitalDelayType01 := DefPropDelay01;
tipd_sload : VitalDelayType01 := DefPropDelay01;
tipd_clrn : VitalDelayType01 := DefPropDelay01;
tipd_prn : VitalDelayType01 := DefPropDelay01;
tipd_aload : VitalDelayType01 := DefPropDelay01;
tipd_ena : VitalDelayType01 := DefPropDelay01;
TimingChecksOn: Boolean := True;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks;
InstancePath: STRING := "*"
);
port (
d : in std_logic := '0';
clk : in std_logic := '0';
ena : in std_logic := '1';
clrn : in std_logic := '1';
prn : in std_logic := '1';
aload : in std_logic := '0';
asdata : in std_logic := '1';
sclr : in std_logic := '0';
sload : in std_logic := '0';
devclrn : in std_logic := '1';
devpor : in std_logic := '1';
q : out std_logic
);
end component;
--Internal Signals
SIGNAL datainlo_ipd : std_logic := '0';
SIGNAL datainhi_ipd : std_logic := '0';
SIGNAL clk_ipd : std_logic := '0';
SIGNAL clkhi_ipd : std_logic := '0';
SIGNAL clklo_ipd : std_logic := '0';
SIGNAL muxsel_ipd : std_logic := '0';
SIGNAL hrbsel_ipd : std_logic := '0';
SIGNAL ena_ipd : std_logic := '0';
SIGNAL areset_ipd : std_logic := '0';
SIGNAL sreset_ipd : std_logic := '0';
SIGNAL sel_mux_hi_hr : std_logic;
SIGNAL sel_mux_lo_hr : std_logic;
SIGNAL dataout_hr : std_logic;
SIGNAL ddioreg_aclr : std_logic;
SIGNAL ddioreg_prn : std_logic;
SIGNAL ddioreg_adatasdata : std_logic;
SIGNAL ddioreg_sclr : std_logic;
SIGNAL ddioreg_sload : std_logic;
SIGNAL dfflo_tmp : std_logic;
SIGNAL dffhi_tmp : std_logic;
SIGNAL dataout_tmp : std_logic;
Signal mux_sel : std_logic;
Signal mux_hi : std_logic;
Signal sel_mux_hi_in : std_logic;
signal nclk : std_logic;
signal clk1 : std_logic;
signal clk_hi : std_logic;
signal clk_lo : std_logic;
signal muxsel1 : std_logic;
signal muxsel2: std_logic;
signal clk2 : std_logic;
signal muxsel_tmp: std_logic;
signal sel_mux_lo_in : std_logic;
signal datainlo_tmp : std_logic;
signal datainhi_tmp : std_logic;
signal hrb_sel: std_logic;
BEGIN
WireDelay : block
begin
VitalWireDelay (datainlo_ipd, datainlo, tipd_datainlo);
VitalWireDelay (datainhi_ipd, datainhi, tipd_datainhi);
VitalWireDelay (clk_ipd, clk, tipd_clk);
VitalWireDelay (clkhi_ipd, clkhi, tipd_clkhi);
VitalWireDelay (clklo_ipd, clklo, tipd_clklo);
VitalWireDelay (muxsel_ipd, muxsel, tipd_muxsel);
VitalWireDelay (hrbsel_ipd, hrbypass, tipd_hrbsel);
VitalWireDelay (ena_ipd, ena, tipd_ena);
VitalWireDelay (areset_ipd, areset, tipd_areset);
VitalWireDelay (sreset_ipd, sreset, tipd_sreset);
end block;
nclk <= NOT clk_ipd;
PROCESS
BEGIN
WAIT UNTIL areset_ipd'EVENT OR sreset_ipd'EVENT;
IF (async_mode = "clear") THEN
ddioreg_aclr <= NOT areset_ipd;
ddioreg_prn <= '1';
ELSIF (async_mode = "preset") THEN
ddioreg_aclr <= '1';
ddioreg_prn <= NOT areset_ipd;
ELSE
ddioreg_aclr <= '1';
ddioreg_prn <= '1';
END IF;
IF (sync_mode = "clear") THEN
ddioreg_adatasdata <= '0';
ddioreg_sclr <= sreset_ipd;
ddioreg_sload <= '0';
ELSIF (sync_mode = "preset") THEN
ddioreg_adatasdata <= '1';
ddioreg_sclr <= '0';
ddioreg_sload <= sreset_ipd;
ELSE
ddioreg_adatasdata <= '0';
ddioreg_sclr <= '0';
ddioreg_sload <= '0';
END IF;
END PROCESS;
process(clk_ipd)
begin
clk1 <= clk_ipd;
end process;
process(muxsel_ipd)
begin
muxsel1 <= muxsel_ipd;
end process;
process(hrbsel_ipd)
begin
hrb_sel <= hrbsel_ipd;
end process;
--DDIO HIGH Register
clk_hi <= clkhi_ipd when(use_new_clocking_model = "true") else clk_ipd;
datainhi_tmp <= datainhi;
ddioreg_hi : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => datainhi_tmp,
clk => clk_hi,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => dffhi_tmp,
devpor => devpor,
devclrn => devclrn
);
--DDIO Low Register
clk_lo <= clklo_ipd when(use_new_clocking_model = "true") else clk_ipd;
datainlo_tmp <= datainlo;
ddioreg_lo : dffeas
GENERIC MAP (
power_up => power_up
)
PORT MAP (
d => datainlo_tmp,
clk => clk_lo,
clrn => ddioreg_aclr,
prn => ddioreg_prn,
sclr => ddioreg_sclr,
sload => ddioreg_sload,
asdata => ddioreg_adatasdata,
ena => ena_ipd,
q => dfflo_tmp,
devpor => devpor,
devclrn => devclrn
);
muxsel2 <= muxsel1;
clk2 <= clk1;
mux_sel <= muxsel2 when(use_new_clocking_model = "true") else clk2;
muxsel_tmp <= mux_sel;
sel_mux_lo_in <= dfflo_tmp;
sel_mux_hi_in <= dffhi_tmp;
sel_mux_hi_hr <= datainhi_tmp;
sel_mux_lo_hr <= dataout_hr;
sel_mux : cyclonev_mux21
port map (
A => sel_mux_lo_in,
B => sel_mux_hi_in,
S => muxsel_tmp,
MO => dataout_hr
);
dfflo <= dfflo_tmp;
dffhi <= dffhi_tmp;
sel_mux_hr : cyclonev_mux21
port map (
A => sel_mux_lo_hr,
B => sel_mux_hi_hr,
S => hrb_sel,
MO => dataout
);
END arch;
----------------------------------------------------------------------------
-- Module Name : cyclonev_io_pad
-- Description : Simulation model for cyclonev IO pad
----------------------------------------------------------------------------
LIBRARY IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
ENTITY cyclonev_io_pad IS
GENERIC (
lpm_type : string := "cyclonev_io_pad");
PORT (
--INPUT PORTS
padin : IN std_logic := '0'; -- Input Pad
--OUTPUT PORTS
padout : OUT std_logic); -- Output Pad
END cyclonev_io_pad;
ARCHITECTURE arch OF cyclonev_io_pad IS
BEGIN
padout <= padin;
END arch;
--------------------------------------------------------------
--
-- Entity Name : cyclonev_bias_logic
--
-- Description : CYCLONEV Bias Block's Logic Block
-- VHDL simulation model
--
--------------------------------------------------------------
LIBRARY IEEE;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use IEEE.std_logic_1164.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_bias_logic IS
GENERIC (
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_shiftnld : VitalDelayType01 := DefPropDelay01;
tipd_captnupdt : VitalDelayType01 := DefPropDelay01;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks
);
PORT (
clk : in std_logic := '0';
shiftnld : in std_logic := '0';
captnupdt : in std_logic := '0';
mainclk : out std_logic := '0';
updateclk : out std_logic := '0';
capture : out std_logic := '0';
update : out std_logic := '0'
);
attribute VITAL_LEVEL0 of cyclonev_bias_logic : ENTITY IS TRUE;
end cyclonev_bias_logic;
ARCHITECTURE vital_bias_logic of cyclonev_bias_logic IS
attribute VITAL_LEVEL0 of vital_bias_logic : ARCHITECTURE IS TRUE;
signal clk_ipd : std_logic := '0';
signal shiftnld_ipd : std_logic := '0';
signal captnupdt_ipd : std_logic := '0';
begin
WireDelay : block
begin
VitalWireDelay (clk_ipd, clk, tipd_clk);
VitalWireDelay (shiftnld_ipd, shiftnld, tipd_shiftnld);
VitalWireDelay (captnupdt_ipd, captnupdt, tipd_captnupdt);
end block;
process (clk_ipd, shiftnld_ipd, captnupdt_ipd)
variable select_tmp : std_logic_vector(1 DOWNTO 0) := (others => '0');
begin
select_tmp := captnupdt_ipd & shiftnld_ipd;
case select_tmp IS
when "10"|"11" =>
mainclk <= '0';
updateclk <= clk_ipd;
capture <= '1';
update <= '0';
when "01" =>
mainclk <= '0';
updateclk <= clk_ipd;
capture <= '0';
update <= '0';
when "00" =>
mainclk <= clk_ipd;
updateclk <= '0';
capture <= '0';
update <= '1';
when others =>
mainclk <= '0';
updateclk <= '0';
capture <= '0';
update <= '0';
end case;
end process;
end vital_bias_logic;
--------------------------------------------------------------
--
-- Entity Name : cyclonev_bias_generator
--
-- Description : CYCLONEV Bias Generator VHDL simulation model
--
--------------------------------------------------------------
LIBRARY IEEE;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use IEEE.std_logic_1164.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_bias_generator IS
GENERIC (
tipd_din : VitalDelayType01 := DefPropDelay01;
tipd_mainclk : VitalDelayType01 := DefPropDelay01;
tipd_updateclk : VitalDelayType01 := DefPropDelay01;
tipd_update : VitalDelayType01 := DefPropDelay01;
tipd_capture : VitalDelayType01 := DefPropDelay01;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks
);
PORT (
din : in std_logic := '0';
mainclk : in std_logic := '0';
updateclk : in std_logic := '0';
capture : in std_logic := '0';
update : in std_logic := '0';
dout : out std_logic := '0'
);
attribute VITAL_LEVEL0 of cyclonev_bias_generator : ENTITY IS TRUE;
end cyclonev_bias_generator;
ARCHITECTURE vital_bias_generator of cyclonev_bias_generator IS
attribute VITAL_LEVEL0 of vital_bias_generator : ARCHITECTURE IS TRUE;
CONSTANT TOTAL_REG : integer := 202;
signal din_ipd : std_logic := '0';
signal mainclk_ipd : std_logic := '0';
signal updateclk_ipd : std_logic := '0';
signal update_ipd : std_logic := '0';
signal capture_ipd : std_logic := '0';
signal generator_reg : std_logic_vector((TOTAL_REG - 1) DOWNTO 0) := (others => '0');
signal update_reg : std_logic_vector((TOTAL_REG - 1) DOWNTO 0) := (others => '0');
signal dout_tmp : std_logic := '0';
signal i : integer := 0;
begin
WireDelay : block
begin
VitalWireDelay (din_ipd, din, tipd_din);
VitalWireDelay (mainclk_ipd, mainclk, tipd_mainclk);
VitalWireDelay (updateclk_ipd, updateclk, tipd_updateclk);
VitalWireDelay (update_ipd, update, tipd_update);
VitalWireDelay (capture_ipd, capture, tipd_capture);
end block;
process (mainclk_ipd)
begin
if (mainclk_ipd'event AND (mainclk_ipd = '1') AND (mainclk_ipd'last_value = '0')) then
if ((capture_ipd = '0') AND (update_ipd = '1')) then
for i in 0 to (TOTAL_REG - 1)
loop
generator_reg(i) <= update_reg(i);
end loop;
end if;
end if;
end process;
process (updateclk_ipd)
begin
if (updateclk_ipd'event AND (updateclk_ipd = '1') AND (updateclk_ipd'last_value = '0')) then
dout_tmp <= update_reg(TOTAL_REG - 1);
if ((capture_ipd = '0') AND (update_ipd = '0')) then
for i in 1 to (TOTAL_REG - 1)
loop
update_reg(i) <= update_reg(i - 1);
end loop;
update_reg(0) <= din_ipd;
elsif ((capture_ipd = '1') AND (update_ipd = '0')) then
for i in 1 to (TOTAL_REG - 1)
loop
update_reg(i) <= generator_reg(i);
end loop;
end if;
end if;
end process;
dout <= dout_tmp;
end vital_bias_generator;
--------------------------------------------------------------
--
-- Entity Name : cyclonev_bias_block
--
-- Description : CYCLONEV Bias Block VHDL simulation model
--
--------------------------------------------------------------
LIBRARY IEEE;
use IEEE.VITAL_Timing.all;
use IEEE.VITAL_Primitives.all;
use IEEE.std_logic_1164.all;
use work.cyclonev_atom_pack.all;
ENTITY cyclonev_bias_block IS
GENERIC (
lpm_type : string := "cyclonev_bias_block";
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_shiftnld : VitalDelayType01 := DefPropDelay01;
tipd_captnupdt : VitalDelayType01 := DefPropDelay01;
tipd_din : VitalDelayType01 := DefPropDelay01;
tsetup_din_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_shiftnld_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tsetup_captnupdt_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_din_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_shiftnld_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
thold_captnupdt_clk_noedge_posedge : VitalDelayType := DefSetupHoldCnst;
tpd_clk_dout_posedge : VitalDelayType01 := DefPropDelay01;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks
);
PORT (
clk : in std_logic := '0';
shiftnld : in std_logic := '0';
captnupdt : in std_logic := '0';
din : in std_logic := '0';
dout : out std_logic := '0'
);
attribute VITAL_LEVEL0 of cyclonev_bias_block : ENTITY IS TRUE;
end cyclonev_bias_block;
ARCHITECTURE vital_bias_block of cyclonev_bias_block IS
COMPONENT cyclonev_bias_logic
GENERIC (
tipd_clk : VitalDelayType01 := DefPropDelay01;
tipd_shiftnld : VitalDelayType01 := DefPropDelay01;
tipd_captnupdt : VitalDelayType01 := DefPropDelay01;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks
);
PORT (
clk : in std_logic := '0';
shiftnld : in std_logic := '0';
captnupdt : in std_logic := '0';
mainclk : out std_logic := '0';
updateclk : out std_logic := '0';
capture : out std_logic := '0';
update : out std_logic := '0'
);
end COMPONENT;
COMPONENT cyclonev_bias_generator
GENERIC (
tipd_din : VitalDelayType01 := DefPropDelay01;
tipd_mainclk : VitalDelayType01 := DefPropDelay01;
tipd_updateclk : VitalDelayType01 := DefPropDelay01;
tipd_update : VitalDelayType01 := DefPropDelay01;
tipd_capture : VitalDelayType01 := DefPropDelay01;
MsgOn: Boolean := DefGlitchMsgOn;
XOn: Boolean := DefGlitchXOn;
MsgOnChecks: Boolean := DefMsgOnChecks;
XOnChecks: Boolean := DefXOnChecks
);
PORT (
din : in std_logic := '0';
mainclk : in std_logic := '0';
updateclk : in std_logic := '0';
capture : in std_logic := '0';
update : in std_logic := '0';
dout : out std_logic := '0'
);
end COMPONENT;
signal mainclk_wire : std_logic := '0';
signal updateclk_wire : std_logic := '0';
signal capture_wire : std_logic := '0';
signal update_wire : std_logic := '0';
begin
logic_block : cyclonev_bias_logic
PORT MAP (
clk => clk,
shiftnld => shiftnld,
captnupdt => captnupdt,
mainclk => mainclk_wire,
updateclk => updateclk_wire,
capture => capture_wire,
update => update_wire
);
bias_generator : cyclonev_bias_generator
PORT MAP (
din => din,
mainclk => mainclk_wire,
updateclk => updateclk_wire,
capture => capture_wire,
update => update_wire,
dout => dout
);
end vital_bias_block;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_clk_phase_select is
generic (
phase_setting : integer := 0;
invert_phase : string := "dynamic";
use_phasectrlin : string := "true";
physical_clock_source : string := "dqs_2x_clk";
use_dqs_input : string := "false"
);
port (
clkin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
dqsin : in std_logic := '0';
phaseinvertctrl : in std_logic := '0';
clkout : out std_logic;
phasectrlin : in std_logic_vector(1 downto 0) := (OTHERS => '0')
);
end cyclonev_clk_phase_select;
architecture behavior of cyclonev_clk_phase_select is
component cyclonev_clk_phase_select_encrypted
generic (
phase_setting : integer := 0;
invert_phase : string := "dynamic";
use_phasectrlin : string := "true";
physical_clock_source : string := "dqs_2x_clk";
use_dqs_input : string := "false"
);
port (
clkin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
dqsin : in std_logic := '0';
phaseinvertctrl : in std_logic := '0';
clkout : out std_logic;
phasectrlin : in std_logic_vector(1 downto 0) := (OTHERS => '0')
);
end component;
begin
inst : cyclonev_clk_phase_select_encrypted
generic map (
phase_setting => phase_setting,
invert_phase => invert_phase,
use_phasectrlin => use_phasectrlin,
physical_clock_source => physical_clock_source,
use_dqs_input => use_dqs_input
)
port map (
clkin => clkin,
dqsin => dqsin,
phaseinvertctrl => phaseinvertctrl,
clkout => clkout,
phasectrlin => phasectrlin
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_clkena is
generic (
clock_type : string := "auto";
ena_register_mode : string := "always enabled";
lpm_type : string := "cyclonev_clkena";
ena_register_power_up : string := "high";
disable_mode : string := "low";
test_syn : string := "high"
);
port (
inclk : in std_logic := '1';
ena : in std_logic := '1';
enaout : out std_logic;
outclk : out std_logic
);
end cyclonev_clkena;
architecture behavior of cyclonev_clkena is
component cyclonev_clkena_encrypted
generic (
clock_type : string := "auto";
ena_register_mode : string := "always enabled";
lpm_type : string := "cyclonev_clkena";
ena_register_power_up : string := "high";
disable_mode : string := "low";
test_syn : string := "high"
);
port (
inclk : in std_logic;
ena : in std_logic;
enaout : out std_logic;
outclk : out std_logic
);
end component;
begin
inst : cyclonev_clkena_encrypted
generic map (
clock_type => clock_type,
ena_register_mode => ena_register_mode,
lpm_type => lpm_type,
ena_register_power_up => ena_register_power_up,
disable_mode => disable_mode,
test_syn => test_syn
)
port map (
inclk => inclk,
ena => ena,
enaout => enaout,
outclk => outclk
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_clkselect is
generic (
lpm_type : string := "cyclonev_clkselect";
test_cff : string := "low"
);
port (
inclk : in std_logic_vector(3 downto 0) := "0000";
clkselect : in std_logic_vector(1 downto 0) := "00";
outclk : out std_logic
);
end cyclonev_clkselect;
architecture behavior of cyclonev_clkselect is
component cyclonev_clkselect_encrypted
generic (
lpm_type : string := "cyclonev_clkselect";
test_cff : string := "low"
);
port (
inclk : in std_logic_vector(3 downto 0);
clkselect : in std_logic_vector(1 downto 0);
outclk : out std_logic
);
end component;
begin
inst : cyclonev_clkselect_encrypted
generic map (
lpm_type => lpm_type,
test_cff => test_cff
)
port map (
inclk => inclk,
clkselect => clkselect,
outclk => outclk
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_delay_chain is
generic (
sim_intrinsic_rising_delay : integer := 200;
sim_intrinsic_falling_delay : integer := 200;
sim_rising_delay_increment : integer := 10;
sim_falling_delay_increment : integer := 10;
lpm_type : string := "cyclonev_delay_chain"
);
port (
datain : in std_logic := '0';
delayctrlin : in std_logic_vector(4 downto 0) := (OTHERS => '0');
dataout : out std_logic
);
end cyclonev_delay_chain;
architecture behavior of cyclonev_delay_chain is
component cyclonev_delay_chain_encrypted
generic (
sim_intrinsic_rising_delay : integer := 200;
sim_intrinsic_falling_delay : integer := 200;
sim_rising_delay_increment : integer := 10;
sim_falling_delay_increment : integer := 10;
lpm_type : string := "cyclonev_delay_chain"
);
port (
datain : in std_logic := '0';
delayctrlin : in std_logic_vector(4 downto 0) := (OTHERS => '0');
dataout : out std_logic
);
end component;
begin
inst : cyclonev_delay_chain_encrypted
generic map (
sim_intrinsic_rising_delay => sim_intrinsic_rising_delay,
sim_intrinsic_falling_delay => sim_intrinsic_falling_delay,
sim_rising_delay_increment => sim_rising_delay_increment,
sim_falling_delay_increment => sim_falling_delay_increment,
lpm_type => lpm_type
)
port map (
datain => datain,
delayctrlin => delayctrlin,
dataout => dataout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_dll_offset_ctrl is
generic (
use_offset : string := "false";
static_offset : integer := 0;
use_pvt_compensation : string := "false"
);
port (
clk : in std_logic := '0';
offsetdelayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
offset : in std_logic_vector(6 downto 0) := (OTHERS => '0');
addnsub : in std_logic := '0';
aload : in std_logic := '0';
offsetctrlout : out std_logic_vector(6 downto 0);
offsettestout : out std_logic_vector(6 downto 0)
);
end cyclonev_dll_offset_ctrl;
architecture behavior of cyclonev_dll_offset_ctrl is
component cyclonev_dll_offset_ctrl_encrypted
generic (
use_offset : string := "false";
static_offset : integer := 0;
use_pvt_compensation : string := "false"
);
port (
clk : in std_logic := '0';
offsetdelayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
offset : in std_logic_vector(6 downto 0) := (OTHERS => '0');
addnsub : in std_logic := '0';
aload : in std_logic := '0';
offsetctrlout : out std_logic_vector(6 downto 0);
offsettestout : out std_logic_vector(6 downto 0)
);
end component;
begin
inst : cyclonev_dll_offset_ctrl_encrypted
generic map (
use_offset => use_offset,
static_offset => static_offset,
use_pvt_compensation => use_pvt_compensation
)
port map (
clk => clk,
offsetdelayctrlin => offsetdelayctrlin,
offset => offset,
addnsub => addnsub,
aload => aload,
offsetctrlout => offsetctrlout,
offsettestout => offsettestout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_dll is
generic (
input_frequency : string := "0 MHz";
delayctrlout_mode : string := "normal";
jitter_reduction : string := "false";
use_upndnin : string := "false";
use_upndninclkena : string := "false";
dual_phase_comparators : string := "true";
sim_valid_lock : integer := 16;
sim_valid_lockcount : integer := 0;
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10;
static_delay_ctrl : integer := 0;
lpm_type : string := "cyclonev_dll";
lpm_hint : string := "unused";
delay_chain_length : integer := 8
);
port (
aload : in std_logic := '0';
clk : in std_logic := '0';
upndnin : in std_logic := '0';
upndninclkena : in std_logic := '0';
delayctrlout : out std_logic_vector(6 downto 0);
dqsupdate : out std_logic;
offsetdelayctrlout : out std_logic_vector(6 downto 0);
offsetdelayctrlclkout : out std_logic;
upndnout : out std_logic;
dffin : out std_logic
);
end cyclonev_dll;
architecture behavior of cyclonev_dll is
component cyclonev_dll_encrypted
generic (
input_frequency : string := "0 MHz";
delayctrlout_mode : string := "normal";
jitter_reduction : string := "false";
use_upndnin : string := "false";
use_upndninclkena : string := "false";
dual_phase_comparators : string := "true";
sim_valid_lock : integer := 16;
sim_valid_lockcount : integer := 0;
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10;
static_delay_ctrl : integer := 0;
lpm_type : string := "cyclonev_dll";
lpm_hint : string := "unused";
delay_chain_length : integer := 8
);
port (
aload : in std_logic := '0';
clk : in std_logic := '0';
upndnin : in std_logic := '0';
upndninclkena : in std_logic := '0';
delayctrlout : out std_logic_vector(6 downto 0);
dqsupdate : out std_logic;
offsetdelayctrlout : out std_logic_vector(6 downto 0);
offsetdelayctrlclkout : out std_logic;
upndnout : out std_logic;
dffin : out std_logic
);
end component;
begin
inst : cyclonev_dll_encrypted
generic map (
input_frequency => input_frequency,
delayctrlout_mode => delayctrlout_mode,
jitter_reduction => jitter_reduction,
use_upndnin => use_upndnin,
use_upndninclkena => use_upndninclkena,
dual_phase_comparators => dual_phase_comparators,
sim_valid_lock => sim_valid_lock,
sim_valid_lockcount => sim_valid_lockcount,
sim_buffer_intrinsic_delay => sim_buffer_intrinsic_delay,
sim_buffer_delay_increment => sim_buffer_delay_increment,
static_delay_ctrl => static_delay_ctrl,
lpm_type => lpm_type,
lpm_hint => lpm_hint,
delay_chain_length => delay_chain_length
)
port map (
aload => aload,
clk => clk,
upndnin => upndnin,
upndninclkena => upndninclkena,
delayctrlout => delayctrlout,
dqsupdate => dqsupdate,
offsetdelayctrlout => offsetdelayctrlout,
offsetdelayctrlclkout => offsetdelayctrlclkout,
upndnout => upndnout,
dffin => dffin
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_dqs_config is
generic (
lpm_type : string := "cyclonev_dqs_config"
);
port (
datain : in std_logic := '0';
dqsenablegatingdelaysetting : out std_logic_vector(4 downto 0);
dqshalfratebypass : out std_logic;
enadqsenablephasetransferreg : out std_logic;
postamblephaseinvert : out std_logic;
dqsenableungatingdelaysetting : out std_logic_vector(4 downto 0);
octdelaysetting : out std_logic_vector(4 downto 0);
clk : in std_logic := '0';
dqsbusoutdelaysetting : out std_logic_vector(4 downto 0);
postamblephasesetting : out std_logic_vector(1 downto 0);
ena : in std_logic := '0';
dataout : out std_logic;
update : in std_logic := '0'
);
end cyclonev_dqs_config;
architecture behavior of cyclonev_dqs_config is
component cyclonev_dqs_config_encrypted
generic (
lpm_type : string := "cyclonev_dqs_config"
);
port (
datain : in std_logic := '0';
dqsenablegatingdelaysetting : out std_logic_vector(4 downto 0);
dqshalfratebypass : out std_logic;
enadqsenablephasetransferreg : out std_logic;
postamblephaseinvert : out std_logic;
dqsenableungatingdelaysetting : out std_logic_vector(4 downto 0);
octdelaysetting : out std_logic_vector(4 downto 0);
clk : in std_logic := '0';
dqsbusoutdelaysetting : out std_logic_vector(4 downto 0);
postamblephasesetting : out std_logic_vector(1 downto 0);
ena : in std_logic := '0';
dataout : out std_logic;
update : in std_logic := '0'
);
end component;
begin
inst : cyclonev_dqs_config_encrypted
generic map (
lpm_type => lpm_type
)
port map (
datain => datain,
dqsenablegatingdelaysetting => dqsenablegatingdelaysetting,
dqshalfratebypass => dqshalfratebypass,
enadqsenablephasetransferreg => enadqsenablephasetransferreg,
postamblephaseinvert => postamblephaseinvert,
dqsenableungatingdelaysetting => dqsenableungatingdelaysetting,
octdelaysetting => octdelaysetting,
clk => clk,
dqsbusoutdelaysetting => dqsbusoutdelaysetting,
postamblephasesetting => postamblephasesetting,
ena => ena,
dataout => dataout,
update => update
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_dqs_delay_chain is
generic (
dqs_input_frequency : string := "unused";
dqs_phase_shift : integer := 0;
use_phasectrlin : string := "false";
phase_setting : integer := 0;
dqs_offsetctrl_enable : string := "false";
dqs_ctrl_latches_enable : string := "false";
use_alternate_input_for_first_stage_delayctrl : string := "false";
use_alternate_input_for_multi_stage_delayctrl : string := "false";
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10;
test_enable : string := "false"
);
port (
dqsin : in std_logic := '0';
dqsenable : in std_logic := '1';
delayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
offsetctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
dqsupdateen : in std_logic := '1';
phasectrlin : in std_logic_vector(2 downto 0) := (OTHERS => '0');
testin : in std_logic := '0';
dffin : out std_logic;
dqsbusout : out std_logic
);
end cyclonev_dqs_delay_chain;
architecture behavior of cyclonev_dqs_delay_chain is
component cyclonev_dqs_delay_chain_encrypted
generic (
dqs_input_frequency : string := "unused";
dqs_phase_shift : integer := 0;
use_phasectrlin : string := "false";
phase_setting : integer := 0;
dqs_offsetctrl_enable : string := "false";
dqs_ctrl_latches_enable : string := "false";
use_alternate_input_for_first_stage_delayctrl : string := "false";
use_alternate_input_for_multi_stage_delayctrl : string := "false";
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10;
test_enable : string := "false"
);
port (
dqsin : in std_logic := '0';
dqsenable : in std_logic := '1';
delayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
offsetctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
dqsupdateen : in std_logic := '1';
phasectrlin : in std_logic_vector(2 downto 0) := (OTHERS => '0');
testin : in std_logic := '0';
dffin : out std_logic;
dqsbusout : out std_logic
);
end component;
begin
inst : cyclonev_dqs_delay_chain_encrypted
generic map (
dqs_input_frequency => dqs_input_frequency,
dqs_phase_shift => dqs_phase_shift,
use_phasectrlin => use_phasectrlin,
phase_setting => phase_setting,
dqs_offsetctrl_enable => dqs_offsetctrl_enable,
dqs_ctrl_latches_enable => dqs_ctrl_latches_enable,
use_alternate_input_for_first_stage_delayctrl => use_alternate_input_for_first_stage_delayctrl,
use_alternate_input_for_multi_stage_delayctrl => use_alternate_input_for_multi_stage_delayctrl,
sim_buffer_intrinsic_delay => sim_buffer_intrinsic_delay,
sim_buffer_delay_increment => sim_buffer_delay_increment,
test_enable => test_enable
)
port map (
dqsin => dqsin,
dqsenable => dqsenable,
delayctrlin => delayctrlin,
offsetctrlin => offsetctrlin,
dqsupdateen => dqsupdateen,
phasectrlin => phasectrlin,
testin => testin,
dffin => dffin,
dqsbusout => dqsbusout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_dqs_enable_ctrl is
generic (
delay_dqs_enable_by_half_cycle : string := "false";
add_phase_transfer_reg : string := "false"
);
port (
dqsenablein : in std_logic := '1';
zerophaseclk : in std_logic := '1';
enaphasetransferreg : in std_logic := '0';
levelingclk : in std_logic := '1';
dffin : out std_logic;
dffphasetransfer : out std_logic;
dffextenddqsenable : out std_logic;
dqsenableout : out std_logic
);
end cyclonev_dqs_enable_ctrl;
architecture behavior of cyclonev_dqs_enable_ctrl is
component cyclonev_dqs_enable_ctrl_encrypted
generic (
delay_dqs_enable_by_half_cycle : string := "false";
add_phase_transfer_reg : string := "false"
);
port (
dqsenablein : in std_logic := '1';
zerophaseclk : in std_logic := '1';
enaphasetransferreg : in std_logic := '0';
levelingclk : in std_logic := '1';
dffin : out std_logic;
dffphasetransfer : out std_logic;
dffextenddqsenable : out std_logic;
dqsenableout : out std_logic
);
end component;
begin
inst : cyclonev_dqs_enable_ctrl_encrypted
generic map (
delay_dqs_enable_by_half_cycle => delay_dqs_enable_by_half_cycle,
add_phase_transfer_reg => add_phase_transfer_reg
)
port map (
dqsenablein => dqsenablein,
zerophaseclk => zerophaseclk,
enaphasetransferreg => enaphasetransferreg,
levelingclk => levelingclk,
dffin => dffin,
dffphasetransfer => dffphasetransfer,
dffextenddqsenable => dffextenddqsenable,
dqsenableout => dqsenableout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_duty_cycle_adjustment is
generic (
dca_config_mode : integer := 0;
duty_cycle_delay_mode : string := "none";
lpm_type : string := "cyclonev_duty_cycle_adjustment"
);
port (
clkin : in std_logic := '0';
delaymode : in std_logic_vector(1 downto 0) := (OTHERS => '0');
delayctrlin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
clkout : out std_logic
);
end cyclonev_duty_cycle_adjustment;
architecture behavior of cyclonev_duty_cycle_adjustment is
component cyclonev_duty_cycle_adjustment_encrypted
generic (
dca_config_mode : integer := 0;
duty_cycle_delay_mode : string := "none";
lpm_type : string := "cyclonev_duty_cycle_adjustment"
);
port (
clkin : in std_logic := '0';
delaymode : in std_logic_vector(1 downto 0) := (OTHERS => '0');
delayctrlin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
clkout : out std_logic
);
end component;
begin
inst : cyclonev_duty_cycle_adjustment_encrypted
generic map (
dca_config_mode => dca_config_mode,
duty_cycle_delay_mode => duty_cycle_delay_mode,
lpm_type => lpm_type
)
port map (
clkin => clkin,
delaymode => delaymode,
delayctrlin => delayctrlin,
clkout => clkout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_fractional_pll is
generic (
output_clock_frequency : string := "";
reference_clock_frequency : string := "";
mimic_fbclk_type : string := "cdb_pll_mimic_fbclk_gclk";
dsm_accumulator_reset_value : integer := 0;
forcelock : string := "false";
nreset_invert : string := "false";
pll_atb : integer := 0;
pll_bwctrl : integer := 10000;
pll_cmp_buf_dly : string := "0 ps";
pll_cp_comp : string := "true";
pll_cp_current : integer := 20;
pll_ctrl_override_setting : string := "false";
pll_dsm_dither : string := "disable";
pll_dsm_out_sel : string := "disable";
pll_dsm_reset : string := "false";
pll_ecn_bypass : string := "false";
pll_ecn_test_en : string := "false";
pll_enable : string := "true";
pll_fbclk_mux_1 : string := "glb";
pll_fbclk_mux_2 : string := "fb_1";
pll_fractional_carry_out : integer := 24;
pll_fractional_division : integer := 1;
pll_fractional_division_string : string := "1";
pll_fractional_value_ready : string := "true";
pll_lf_testen : string := "false";
pll_lock_fltr_cfg : integer := 0;
pll_lock_fltr_test : string := "false";
pll_m_cnt_bypass_en : string := "false";
pll_m_cnt_coarse_dly : string := "0 ps";
pll_m_cnt_fine_dly : string := "0 ps";
pll_m_cnt_hi_div : integer := 1;
pll_m_cnt_in_src : string := "ph_mux_clk";
pll_m_cnt_lo_div : integer := 1;
pll_m_cnt_odd_div_duty_en : string := "false";
pll_m_cnt_ph_mux_prst : integer := 0;
pll_m_cnt_prst : integer := 1;
pll_n_cnt_bypass_en : string := "false";
pll_n_cnt_coarse_dly : string := "0 ps";
pll_n_cnt_fine_dly : string := "0 ps";
pll_n_cnt_hi_div : integer := 1;
pll_n_cnt_lo_div : integer := 1;
pll_n_cnt_odd_div_duty_en : string := "false";
pll_ref_buf_dly : string := "0 ps";
pll_reg_boost : integer := 0;
pll_regulator_bypass : string := "false";
pll_ripplecap_ctrl : integer := 0;
pll_slf_rst : string := "false";
pll_tclk_mux_en : string := "false";
pll_tclk_sel : string := "cdb_pll_tclk_sel_m_src";
pll_test_enable : string := "false";
pll_testdn_enable : string := "false";
pll_testup_enable : string := "false";
pll_unlock_fltr_cfg : integer := 0;
pll_vco_div : integer := 2;
pll_vco_ph0_en : string := "false";
pll_vco_ph1_en : string := "false";
pll_vco_ph2_en : string := "false";
pll_vco_ph3_en : string := "false";
pll_vco_ph4_en : string := "false";
pll_vco_ph5_en : string := "false";
pll_vco_ph6_en : string := "false";
pll_vco_ph7_en : string := "false";
pll_vctrl_test_voltage : integer := 750;
vccd0g_atb : string := "disable";
vccd0g_output : integer := 0;
vccd1g_atb : string := "disable";
vccd1g_output : integer := 0;
vccm1g_tap : integer := 2;
vccr_pd : string := "false";
vcodiv_override : string := "false";
fractional_pll_index : integer := 1
);
port (
coreclkfb : in std_logic;
ecnc1test : in std_logic := '0';
ecnc2test : in std_logic := '0';
fbclkfpll : in std_logic := '0';
lvdsfbin : in std_logic := '0';
nresync : in std_logic;
pfden : in std_logic := '0';
refclkin : in std_logic;
shift : in std_logic;
shiftdonein : in std_logic;
shiften : in std_logic;
up : in std_logic;
vsspl : in std_logic := '0';
zdb : in std_logic := '0';
cntnen : out std_logic;
fbclk : out std_logic;
fblvdsout : out std_logic;
lock : out std_logic;
mhi : out std_logic_vector(7 downto 0);
mcntout : out std_logic;
plniotribuf : out std_logic;
shiftdoneout : out std_logic;
tclk : out std_logic;
vcoph : out std_logic_vector(7 downto 0)
);
end cyclonev_fractional_pll;
architecture behavior of cyclonev_fractional_pll is
component cyclonev_fractional_pll_encrypted
generic (
output_clock_frequency : string := "";
reference_clock_frequency : string := "";
mimic_fbclk_type : string := "cdb_pll_mimic_fbclk_gclk";
dsm_accumulator_reset_value : integer := 0;
forcelock : string := "false";
nreset_invert : string := "false";
pll_atb : integer := 0;
pll_bwctrl : integer := 10000;
pll_cmp_buf_dly : string := "0 ps";
pll_cp_comp : string := "true";
pll_cp_current : integer := 20;
pll_ctrl_override_setting : string := "false";
pll_dsm_dither : string := "disable";
pll_dsm_out_sel : string := "disable";
pll_dsm_reset : string := "false";
pll_ecn_bypass : string := "false";
pll_ecn_test_en : string := "false";
pll_enable : string := "true";
pll_fbclk_mux_1 : string := "glb";
pll_fbclk_mux_2 : string := "fb_1";
pll_fractional_carry_out : integer := 24;
pll_fractional_division : integer := 1;
pll_fractional_division_string : string := "1";
pll_fractional_value_ready : string := "true";
pll_lf_testen : string := "false";
pll_lock_fltr_cfg : integer := 0;
pll_lock_fltr_test : string := "false";
pll_m_cnt_bypass_en : string := "false";
pll_m_cnt_coarse_dly : string := "0 ps";
pll_m_cnt_fine_dly : string := "0 ps";
pll_m_cnt_hi_div : integer := 1;
pll_m_cnt_in_src : string := "ph_mux_clk";
pll_m_cnt_lo_div : integer := 1;
pll_m_cnt_odd_div_duty_en : string := "false";
pll_m_cnt_ph_mux_prst : integer := 0;
pll_m_cnt_prst : integer := 1;
pll_n_cnt_bypass_en : string := "false";
pll_n_cnt_coarse_dly : string := "0 ps";
pll_n_cnt_fine_dly : string := "0 ps";
pll_n_cnt_hi_div : integer := 1;
pll_n_cnt_lo_div : integer := 1;
pll_n_cnt_odd_div_duty_en : string := "false";
pll_ref_buf_dly : string := "0 ps";
pll_reg_boost : integer := 0;
pll_regulator_bypass : string := "false";
pll_ripplecap_ctrl : integer := 0;
pll_slf_rst : string := "false";
pll_tclk_mux_en : string := "false";
pll_tclk_sel : string := "cdb_pll_tclk_sel_m_src";
pll_test_enable : string := "false";
pll_testdn_enable : string := "false";
pll_testup_enable : string := "false";
pll_unlock_fltr_cfg : integer := 0;
pll_vco_div : integer := 2;
pll_vco_ph0_en : string := "false";
pll_vco_ph1_en : string := "false";
pll_vco_ph2_en : string := "false";
pll_vco_ph3_en : string := "false";
pll_vco_ph4_en : string := "false";
pll_vco_ph5_en : string := "false";
pll_vco_ph6_en : string := "false";
pll_vco_ph7_en : string := "false";
pll_vctrl_test_voltage : integer := 750;
vccd0g_atb : string := "disable";
vccd0g_output : integer := 0;
vccd1g_atb : string := "disable";
vccd1g_output : integer := 0;
vccm1g_tap : integer := 2;
vccr_pd : string := "false";
vcodiv_override : string := "false";
fractional_pll_index : integer := 1
);
port (
coreclkfb : in std_logic;
ecnc1test : in std_logic := '0';
ecnc2test : in std_logic := '0';
fbclkfpll : in std_logic := '0';
lvdsfbin : in std_logic;
nresync : in std_logic;
pfden : in std_logic := '0';
refclkin : in std_logic;
shift : in std_logic;
shiftdonein : in std_logic;
shiften : in std_logic;
up : in std_logic;
vsspl : in std_logic := '0';
zdb : in std_logic := '0';
cntnen : out std_logic;
fbclk : out std_logic;
fblvdsout : out std_logic;
lock : out std_logic;
mhi : out std_logic_vector(7 downto 0);
mcntout : out std_logic;
plniotribuf : out std_logic;
shiftdoneout : out std_logic;
tclk : out std_logic;
vcoph : out std_logic_vector(7 downto 0)
);
end component;
begin
inst : cyclonev_fractional_pll_encrypted
generic map (
output_clock_frequency => output_clock_frequency,
reference_clock_frequency => reference_clock_frequency,
mimic_fbclk_type => mimic_fbclk_type,
dsm_accumulator_reset_value => dsm_accumulator_reset_value,
forcelock => forcelock,
nreset_invert => nreset_invert,
pll_atb => pll_atb,
pll_bwctrl => pll_bwctrl,
pll_cmp_buf_dly => pll_cmp_buf_dly,
pll_cp_comp => pll_cp_comp,
pll_cp_current => pll_cp_current,
pll_ctrl_override_setting => pll_ctrl_override_setting,
pll_dsm_dither => pll_dsm_dither,
pll_dsm_out_sel => pll_dsm_out_sel,
pll_dsm_reset => pll_dsm_reset,
pll_ecn_bypass => pll_ecn_bypass,
pll_ecn_test_en => pll_ecn_test_en,
pll_enable => pll_enable,
pll_fbclk_mux_1 => pll_fbclk_mux_1,
pll_fbclk_mux_2 => pll_fbclk_mux_2,
pll_fractional_carry_out => pll_fractional_carry_out,
pll_fractional_division => pll_fractional_division,
pll_fractional_division_string => pll_fractional_division_string,
pll_fractional_value_ready => pll_fractional_value_ready,
pll_lf_testen => pll_lf_testen,
pll_lock_fltr_cfg => pll_lock_fltr_cfg,
pll_lock_fltr_test => pll_lock_fltr_test,
pll_m_cnt_bypass_en => pll_m_cnt_bypass_en,
pll_m_cnt_coarse_dly => pll_m_cnt_coarse_dly,
pll_m_cnt_fine_dly => pll_m_cnt_fine_dly,
pll_m_cnt_hi_div => pll_m_cnt_hi_div,
pll_m_cnt_in_src => pll_m_cnt_in_src,
pll_m_cnt_lo_div => pll_m_cnt_lo_div,
pll_m_cnt_odd_div_duty_en => pll_m_cnt_odd_div_duty_en,
pll_m_cnt_ph_mux_prst => pll_m_cnt_ph_mux_prst,
pll_m_cnt_prst => pll_m_cnt_prst,
pll_n_cnt_bypass_en => pll_n_cnt_bypass_en,
pll_n_cnt_coarse_dly => pll_n_cnt_coarse_dly,
pll_n_cnt_fine_dly => pll_n_cnt_fine_dly,
pll_n_cnt_hi_div => pll_n_cnt_hi_div,
pll_n_cnt_lo_div => pll_n_cnt_lo_div,
pll_n_cnt_odd_div_duty_en => pll_n_cnt_odd_div_duty_en,
pll_ref_buf_dly => pll_ref_buf_dly,
pll_reg_boost => pll_reg_boost,
pll_regulator_bypass => pll_regulator_bypass,
pll_ripplecap_ctrl => pll_ripplecap_ctrl,
pll_slf_rst => pll_slf_rst,
pll_tclk_mux_en => pll_tclk_mux_en,
pll_tclk_sel => pll_tclk_sel,
pll_test_enable => pll_test_enable,
pll_testdn_enable => pll_testdn_enable,
pll_testup_enable => pll_testup_enable,
pll_unlock_fltr_cfg => pll_unlock_fltr_cfg,
pll_vco_div => pll_vco_div,
pll_vco_ph0_en => pll_vco_ph0_en,
pll_vco_ph1_en => pll_vco_ph1_en,
pll_vco_ph2_en => pll_vco_ph2_en,
pll_vco_ph3_en => pll_vco_ph3_en,
pll_vco_ph4_en => pll_vco_ph4_en,
pll_vco_ph5_en => pll_vco_ph5_en,
pll_vco_ph6_en => pll_vco_ph6_en,
pll_vco_ph7_en => pll_vco_ph7_en,
pll_vctrl_test_voltage => pll_vctrl_test_voltage,
vccd0g_atb => vccd0g_atb,
vccd0g_output => vccd0g_output,
vccd1g_atb => vccd1g_atb,
vccd1g_output => vccd1g_output,
vccm1g_tap => vccm1g_tap,
vccr_pd => vccr_pd,
vcodiv_override => vcodiv_override,
fractional_pll_index => fractional_pll_index
)
port map (
coreclkfb => coreclkfb,
ecnc1test => ecnc1test,
ecnc2test => ecnc2test,
fbclkfpll => fbclkfpll,
lvdsfbin => lvdsfbin,
nresync => nresync,
pfden => pfden,
refclkin => refclkin,
shift => shift,
shiftdonein => shiftdonein,
shiften => shiften,
up => up,
vsspl => vsspl,
zdb => zdb,
cntnen => cntnen,
fbclk => fbclk,
fblvdsout => fblvdsout,
lock => lock,
mhi => mhi,
mcntout => mcntout,
plniotribuf => plniotribuf,
shiftdoneout => shiftdoneout,
tclk => tclk,
vcoph => vcoph
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_half_rate_input is
generic (
power_up : string := "low";
async_mode : string := "no_reset";
use_dataoutbypass : string := "false"
);
port (
datain : in std_logic_vector(1 downto 0) := (OTHERS => '1');
directin : in std_logic := '1';
clk : in std_logic := '0';
areset : in std_logic := '0';
dataoutbypass : in std_logic := '0';
dataout : out std_logic_vector(3 downto 0);
dffin : out std_logic_vector(1 downto 0)
);
end cyclonev_half_rate_input;
architecture behavior of cyclonev_half_rate_input is
component cyclonev_half_rate_input_encrypted
generic (
power_up : string := "low";
async_mode : string := "no_reset";
use_dataoutbypass : string := "false"
);
port (
datain : in std_logic_vector(1 downto 0) := (OTHERS => '1');
directin : in std_logic := '1';
clk : in std_logic := '0';
areset : in std_logic := '0';
dataoutbypass : in std_logic := '0';
dataout : out std_logic_vector(3 downto 0);
dffin : out std_logic_vector(1 downto 0)
);
end component;
begin
inst : cyclonev_half_rate_input_encrypted
generic map (
power_up => power_up,
async_mode => async_mode,
use_dataoutbypass => use_dataoutbypass
)
port map (
datain => datain,
directin => directin,
clk => clk,
areset => areset,
dataoutbypass => dataoutbypass,
dataout => dataout,
dffin => dffin
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_input_phase_alignment is
generic (
power_up : string := "low";
async_mode : string := "no_reset";
add_input_cycle_delay : string := "false";
bypass_output_register : string := "false";
add_phase_transfer_reg : string := "false";
lpm_type : string := "cyclonev_input_phase_alignment"
);
port (
datain : in std_logic := '1';
levelingclk : in std_logic := '0';
zerophaseclk : in std_logic := '0';
areset : in std_logic := '0';
enainputcycledelay : in std_logic := '0';
enaphasetransferreg : in std_logic := '0';
dataout : out std_logic;
dffin : out std_logic;
dff1t : out std_logic;
dffphasetransfer : out std_logic
);
end cyclonev_input_phase_alignment;
architecture behavior of cyclonev_input_phase_alignment is
component cyclonev_input_phase_alignment_encrypted
generic (
power_up : string := "low";
async_mode : string := "no_reset";
add_input_cycle_delay : string := "false";
bypass_output_register : string := "false";
add_phase_transfer_reg : string := "false";
lpm_type : string := "cyclonev_input_phase_alignment"
);
port (
datain : in std_logic := '1';
levelingclk : in std_logic := '0';
zerophaseclk : in std_logic := '0';
areset : in std_logic := '0';
enainputcycledelay : in std_logic := '0';
enaphasetransferreg : in std_logic := '0';
dataout : out std_logic;
dffin : out std_logic;
dff1t : out std_logic;
dffphasetransfer : out std_logic
);
end component;
begin
inst : cyclonev_input_phase_alignment_encrypted
generic map (
power_up => power_up,
async_mode => async_mode,
add_input_cycle_delay => add_input_cycle_delay,
bypass_output_register => bypass_output_register,
add_phase_transfer_reg => add_phase_transfer_reg,
lpm_type => lpm_type
)
port map (
datain => datain,
levelingclk => levelingclk,
zerophaseclk => zerophaseclk,
areset => areset,
enainputcycledelay => enainputcycledelay,
enaphasetransferreg => enaphasetransferreg,
dataout => dataout,
dffin => dffin,
dff1t => dff1t,
dffphasetransfer => dffphasetransfer
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_io_clock_divider is
generic (
power_up : string := "low";
invert_phase : string := "false";
use_masterin : string := "false";
lpm_type : string := "cyclonev_io_clock_divider"
);
port (
clk : in std_logic := '0';
phaseinvertctrl : in std_logic := '0';
masterin : in std_logic := '0';
clkout : out std_logic;
slaveout : out std_logic
);
end cyclonev_io_clock_divider;
architecture behavior of cyclonev_io_clock_divider is
component cyclonev_io_clock_divider_encrypted
generic (
power_up : string := "low";
invert_phase : string := "false";
use_masterin : string := "false";
lpm_type : string := "cyclonev_io_clock_divider"
);
port (
clk : in std_logic := '0';
phaseinvertctrl : in std_logic := '0';
masterin : in std_logic := '0';
clkout : out std_logic;
slaveout : out std_logic
);
end component;
begin
inst : cyclonev_io_clock_divider_encrypted
generic map (
power_up => power_up,
invert_phase => invert_phase,
use_masterin => use_masterin,
lpm_type => lpm_type
)
port map (
clk => clk,
phaseinvertctrl => phaseinvertctrl,
masterin => masterin,
clkout => clkout,
slaveout => slaveout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_io_config is
generic (
lpm_type : string := "cyclonev_io_config"
);
port (
outputenabledelaysetting : out std_logic_vector(4 downto 0);
outputhalfratebypass : out std_logic;
datain : in std_logic := '0';
readfifomode : out std_logic_vector(2 downto 0);
readfiforeadclockselect : out std_logic_vector(1 downto 0);
padtoinputregisterdelaysetting : out std_logic_vector(4 downto 0);
clk : in std_logic := '0';
ena : in std_logic := '0';
outputregdelaysetting : out std_logic_vector(4 downto 0);
dataout : out std_logic;
update : in std_logic := '0'
);
end cyclonev_io_config;
architecture behavior of cyclonev_io_config is
component cyclonev_io_config_encrypted
generic (
lpm_type : string := "cyclonev_io_config"
);
port (
outputenabledelaysetting : out std_logic_vector(4 downto 0);
outputhalfratebypass : out std_logic;
datain : in std_logic := '0';
readfifomode : out std_logic_vector(2 downto 0);
readfiforeadclockselect : out std_logic_vector(1 downto 0);
padtoinputregisterdelaysetting : out std_logic_vector(4 downto 0);
clk : in std_logic := '0';
ena : in std_logic := '0';
outputregdelaysetting : out std_logic_vector(4 downto 0);
dataout : out std_logic;
update : in std_logic := '0'
);
end component;
begin
inst : cyclonev_io_config_encrypted
generic map (
lpm_type => lpm_type
)
port map (
outputenabledelaysetting => outputenabledelaysetting,
outputhalfratebypass => outputhalfratebypass,
datain => datain,
readfifomode => readfifomode,
readfiforeadclockselect => readfiforeadclockselect,
padtoinputregisterdelaysetting => padtoinputregisterdelaysetting,
clk => clk,
ena => ena,
outputregdelaysetting => outputregdelaysetting,
dataout => dataout,
update => update
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_leveling_delay_chain is
generic (
physical_clock_source : string := "dqs";
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10
);
port (
clkin : in std_logic := '0';
delayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
clkout : out std_logic_vector(3 downto 0)
);
end cyclonev_leveling_delay_chain;
architecture behavior of cyclonev_leveling_delay_chain is
component cyclonev_leveling_delay_chain_encrypted
generic (
physical_clock_source : string := "dqs";
sim_buffer_intrinsic_delay : integer := 175;
sim_buffer_delay_increment : integer := 10
);
port (
clkin : in std_logic := '0';
delayctrlin : in std_logic_vector(6 downto 0) := (OTHERS => '0');
clkout : out std_logic_vector(3 downto 0)
);
end component;
begin
inst : cyclonev_leveling_delay_chain_encrypted
generic map (
physical_clock_source => physical_clock_source,
sim_buffer_intrinsic_delay => sim_buffer_intrinsic_delay,
sim_buffer_delay_increment => sim_buffer_delay_increment
)
port map (
clkin => clkin,
delayctrlin => delayctrlin,
clkout => clkout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_mem_phy is
generic (
hphy_use_hphy : string := "true";
hphy_reset_delay_en : string := "false";
hphy_hhp_hps : string := "false";
hphy_wrap_back_en : string := "false";
hphy_datapath_delay : string := "zero_cycles";
hphy_datapath_ac_delay : string := "zero_cycles";
m_hphy_ac_rom_init_file : string := "ac_ROM.hex";
hphy_ac_ddr_disable : string := "true";
hphy_csr_pipelineglobalenable : string := "true";
m_hphy_inst_rom_init_file : string := "inst_ROM.hex";
hphy_atpg_en : string := "false"
);
port (
iointaddrdout : in std_logic_vector(63 downto 0) := (OTHERS => '0');
iointresetndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointckedout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirlat : out std_logic_vector(4 downto 0);
iointdqoe : in std_logic_vector(89 downto 0) := (OTHERS => '0');
afiaddr : in std_logic_vector(19 downto 0) := (OTHERS => '0');
cfgtwr : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afidm : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiwdatavalid : in std_logic_vector(4 downto 0) := (OTHERS => '0');
avlread : in std_logic := '0';
phyddiockndout : out std_logic_vector(3 downto 0);
iointckndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointbadout : in std_logic_vector(11 downto 0) := (OTHERS => '0');
cfgdevicewidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
cfgcoladdrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointdqdin : out std_logic_vector(179 downto 0);
scanen : in std_logic := '0';
afiwlat : out std_logic_vector(3 downto 0);
phyddiodqsoe : out std_logic_vector(9 downto 0);
cfgaddlat : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirdataen : in std_logic_vector(4 downto 0) := (OTHERS => '0');
phyddiodqslogicincrdataen : out std_logic_vector(9 downto 0);
phyddiodqslogicoct : out std_logic_vector(9 downto 0);
iointdqsoe : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicaclrpstamble : out std_logic_vector(4 downto 0);
phyddiodqsboe : out std_logic_vector(9 downto 0);
phyddiodqdout : out std_logic_vector(179 downto 0);
iointaficalfail : out std_logic;
avlwritedata : in std_logic_vector(31 downto 0) := (OTHERS => '0');
iointdqsboe : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicreadlatency : out std_logic_vector(24 downto 0);
iointwendout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
afiodt : in std_logic_vector(1 downto 0) := (OTHERS => '0');
iointcsndout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiorasndout : out std_logic_vector(3 downto 0);
phyddiocsndout : out std_logic_vector(7 downto 0);
iointdqslogicoct : in std_logic_vector(9 downto 0) := (OTHERS => '0');
softresetn : in std_logic := '0';
phyddiodqsdout : out std_logic_vector(19 downto 0);
iointafiwlat : out std_logic_vector(3 downto 0);
iointdqslogicdqsena : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiba : in std_logic_vector(2 downto 0) := (OTHERS => '0');
phyddiodqslogicdqsena : out std_logic_vector(9 downto 0);
pllavlclk : in std_logic := '0';
aficasn : in std_logic := '0';
cfgbankaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiowendout : out std_logic_vector(3 downto 0);
phyddiockedout : out std_logic_vector(7 downto 0);
cfgdramconfig : in std_logic_vector(23 downto 0) := (OTHERS => '0');
aficsn : in std_logic_vector(1 downto 0) := (OTHERS => '0');
avlwaitrequest : out std_logic;
phyddioodtdout : out std_logic_vector(7 downto 0);
ddiophydqslogicrdatavalid : in std_logic_vector(4 downto 0) := (OTHERS => '0');
avlwrite : in std_logic := '0';
afirasn : in std_logic := '0';
plladdrcmdclk : in std_logic := '0';
phyddioaddrdout : out std_logic_vector(63 downto 0);
aficalfail : out std_logic;
afimemclkdisable : in std_logic := '0';
afiwdata : in std_logic_vector(79 downto 0) := (OTHERS => '0');
iointdqslogicreadlatency : in std_logic_vector(24 downto 0) := (OTHERS => '0');
phyddiodmdout : out std_logic_vector(19 downto 0);
pllaficlk : in std_logic := '0';
cfgtrfc : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointckdout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
aficke : in std_logic_vector(1 downto 0) := (OTHERS => '0');
iointrasndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
phyddioresetndout : out std_logic_vector(3 downto 0);
aficalsuccess : out std_logic;
ddiophydqdin : in std_logic_vector(179 downto 0) := (OTHERS => '0');
iointcasndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointdqsdout : in std_logic_vector(19 downto 0) := (OTHERS => '0');
cfgcsaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiockdout : out std_logic_vector(3 downto 0);
avlreaddata : out std_logic_vector(31 downto 0);
afirdata : out std_logic_vector(79 downto 0);
phyresetn : out std_logic;
iointdqslogicincrdataen : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiwen : in std_logic := '0';
globalresetn : in std_logic := '0';
phyddiodqsbdout : out std_logic_vector(19 downto 0);
plllocked : in std_logic := '0';
phyddiodqslogicfiforeset : out std_logic_vector(4 downto 0);
iointdqslogicfiforeset : in std_logic_vector(4 downto 0) := (OTHERS => '0');
iointodtdout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointafirlat : out std_logic_vector(4 downto 0);
iointaficalsuccess : out std_logic;
iointdqdout : in std_logic_vector(179 downto 0) := (OTHERS => '0');
cfgrowaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiodqslogicaclrfifoctrl : out std_logic_vector(4 downto 0);
phyddiobadout : out std_logic_vector(11 downto 0);
afirdatavalid : out std_logic;
cfgtrefi : in std_logic_vector(15 downto 0) := (OTHERS => '0');
cfgcaswrlat : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirstn : in std_logic := '0';
avlresetn : in std_logic := '0';
iointdqsbdout : in std_logic_vector(19 downto 0) := (OTHERS => '0');
phyddiodqoe : out std_logic_vector(89 downto 0);
iointdqslogicrdatavalid : out std_logic_vector(4 downto 0);
avladdress : in std_logic_vector(15 downto 0) := (OTHERS => '0');
afidqsburst : in std_logic_vector(4 downto 0) := (OTHERS => '0');
iointdqslogicincwrptr : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicincwrptr : out std_logic_vector(9 downto 0);
cfgtcl : in std_logic_vector(7 downto 0) := (OTHERS => '0');
ctlresetn : out std_logic;
cfginterfacewidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiocasndout : out std_logic_vector(3 downto 0);
afirdataenfull : in std_logic_vector(4 downto 0) := (OTHERS => '0');
cfgtmrd : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointdmdout : in std_logic_vector(19 downto 0) := (OTHERS => '0')
);
end cyclonev_mem_phy;
architecture behavior of cyclonev_mem_phy is
component cyclonev_mem_phy_encrypted
generic (
hphy_use_hphy : string := "true";
hphy_reset_delay_en : string := "false";
hphy_hhp_hps : string := "false";
hphy_wrap_back_en : string := "false";
hphy_datapath_delay : string := "zero_cycles";
hphy_datapath_ac_delay : string := "zero_cycles";
m_hphy_ac_rom_init_file : string := "ac_ROM.hex";
hphy_ac_ddr_disable : string := "true";
hphy_csr_pipelineglobalenable : string := "true";
m_hphy_inst_rom_init_file : string := "inst_ROM.hex";
hphy_atpg_en : string := "false"
);
port (
iointaddrdout : in std_logic_vector(63 downto 0) := (OTHERS => '0');
iointresetndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointckedout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirlat : out std_logic_vector(4 downto 0);
iointdqoe : in std_logic_vector(89 downto 0) := (OTHERS => '0');
afiaddr : in std_logic_vector(19 downto 0) := (OTHERS => '0');
cfgtwr : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afidm : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiwdatavalid : in std_logic_vector(4 downto 0) := (OTHERS => '0');
avlread : in std_logic := '0';
phyddiockndout : out std_logic_vector(3 downto 0);
iointckndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointbadout : in std_logic_vector(11 downto 0) := (OTHERS => '0');
cfgdevicewidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
cfgcoladdrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointdqdin : out std_logic_vector(179 downto 0);
scanen : in std_logic := '0';
afiwlat : out std_logic_vector(3 downto 0);
phyddiodqsoe : out std_logic_vector(9 downto 0);
cfgaddlat : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirdataen : in std_logic_vector(4 downto 0) := (OTHERS => '0');
phyddiodqslogicincrdataen : out std_logic_vector(9 downto 0);
phyddiodqslogicoct : out std_logic_vector(9 downto 0);
iointdqsoe : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicaclrpstamble : out std_logic_vector(4 downto 0);
phyddiodqsboe : out std_logic_vector(9 downto 0);
phyddiodqdout : out std_logic_vector(179 downto 0);
iointaficalfail : out std_logic;
avlwritedata : in std_logic_vector(31 downto 0) := (OTHERS => '0');
iointdqsboe : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicreadlatency : out std_logic_vector(24 downto 0);
iointwendout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
afiodt : in std_logic_vector(1 downto 0) := (OTHERS => '0');
iointcsndout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiorasndout : out std_logic_vector(3 downto 0);
phyddiocsndout : out std_logic_vector(7 downto 0);
iointdqslogicoct : in std_logic_vector(9 downto 0) := (OTHERS => '0');
softresetn : in std_logic := '0';
phyddiodqsdout : out std_logic_vector(19 downto 0);
iointafiwlat : out std_logic_vector(3 downto 0);
iointdqslogicdqsena : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiba : in std_logic_vector(2 downto 0) := (OTHERS => '0');
phyddiodqslogicdqsena : out std_logic_vector(9 downto 0);
pllavlclk : in std_logic := '0';
aficasn : in std_logic := '0';
cfgbankaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiowendout : out std_logic_vector(3 downto 0);
phyddiockedout : out std_logic_vector(7 downto 0);
cfgdramconfig : in std_logic_vector(23 downto 0) := (OTHERS => '0');
aficsn : in std_logic_vector(1 downto 0) := (OTHERS => '0');
avlwaitrequest : out std_logic;
phyddioodtdout : out std_logic_vector(7 downto 0);
ddiophydqslogicrdatavalid : in std_logic_vector(4 downto 0) := (OTHERS => '0');
avlwrite : in std_logic := '0';
afirasn : in std_logic := '0';
plladdrcmdclk : in std_logic := '0';
phyddioaddrdout : out std_logic_vector(63 downto 0);
aficalfail : out std_logic;
afimemclkdisable : in std_logic := '0';
afiwdata : in std_logic_vector(79 downto 0) := (OTHERS => '0');
iointdqslogicreadlatency : in std_logic_vector(24 downto 0) := (OTHERS => '0');
phyddiodmdout : out std_logic_vector(19 downto 0);
pllaficlk : in std_logic := '0';
cfgtrfc : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointckdout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
aficke : in std_logic_vector(1 downto 0) := (OTHERS => '0');
iointrasndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
phyddioresetndout : out std_logic_vector(3 downto 0);
aficalsuccess : out std_logic;
ddiophydqdin : in std_logic_vector(179 downto 0) := (OTHERS => '0');
iointcasndout : in std_logic_vector(3 downto 0) := (OTHERS => '0');
iointdqsdout : in std_logic_vector(19 downto 0) := (OTHERS => '0');
cfgcsaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiockdout : out std_logic_vector(3 downto 0);
avlreaddata : out std_logic_vector(31 downto 0);
afirdata : out std_logic_vector(79 downto 0);
phyresetn : out std_logic;
iointdqslogicincrdataen : in std_logic_vector(9 downto 0) := (OTHERS => '0');
afiwen : in std_logic := '0';
globalresetn : in std_logic := '0';
phyddiodqsbdout : out std_logic_vector(19 downto 0);
plllocked : in std_logic := '0';
phyddiodqslogicfiforeset : out std_logic_vector(4 downto 0);
iointdqslogicfiforeset : in std_logic_vector(4 downto 0) := (OTHERS => '0');
iointodtdout : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointafirlat : out std_logic_vector(4 downto 0);
iointaficalsuccess : out std_logic;
iointdqdout : in std_logic_vector(179 downto 0) := (OTHERS => '0');
cfgrowaddrwidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiodqslogicaclrfifoctrl : out std_logic_vector(4 downto 0);
phyddiobadout : out std_logic_vector(11 downto 0);
afirdatavalid : out std_logic;
cfgtrefi : in std_logic_vector(15 downto 0) := (OTHERS => '0');
cfgcaswrlat : in std_logic_vector(7 downto 0) := (OTHERS => '0');
afirstn : in std_logic := '0';
avlresetn : in std_logic := '0';
iointdqsbdout : in std_logic_vector(19 downto 0) := (OTHERS => '0');
phyddiodqoe : out std_logic_vector(89 downto 0);
iointdqslogicrdatavalid : out std_logic_vector(4 downto 0);
avladdress : in std_logic_vector(15 downto 0) := (OTHERS => '0');
afidqsburst : in std_logic_vector(4 downto 0) := (OTHERS => '0');
iointdqslogicincwrptr : in std_logic_vector(9 downto 0) := (OTHERS => '0');
phyddiodqslogicincwrptr : out std_logic_vector(9 downto 0);
cfgtcl : in std_logic_vector(7 downto 0) := (OTHERS => '0');
ctlresetn : out std_logic;
cfginterfacewidth : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phyddiocasndout : out std_logic_vector(3 downto 0);
afirdataenfull : in std_logic_vector(4 downto 0) := (OTHERS => '0');
cfgtmrd : in std_logic_vector(7 downto 0) := (OTHERS => '0');
iointdmdout : in std_logic_vector(19 downto 0) := (OTHERS => '0')
);
end component;
begin
inst : cyclonev_mem_phy_encrypted
generic map (
hphy_use_hphy => hphy_use_hphy,
hphy_reset_delay_en => hphy_reset_delay_en,
hphy_hhp_hps => hphy_hhp_hps,
hphy_wrap_back_en => hphy_wrap_back_en,
hphy_datapath_delay => hphy_datapath_delay,
hphy_datapath_ac_delay => hphy_datapath_ac_delay,
m_hphy_ac_rom_init_file => m_hphy_ac_rom_init_file,
hphy_ac_ddr_disable => hphy_ac_ddr_disable,
hphy_csr_pipelineglobalenable => hphy_csr_pipelineglobalenable,
m_hphy_inst_rom_init_file => m_hphy_inst_rom_init_file,
hphy_atpg_en => hphy_atpg_en
)
port map (
iointaddrdout => iointaddrdout,
iointresetndout => iointresetndout,
iointckedout => iointckedout,
afirlat => afirlat,
iointdqoe => iointdqoe,
afiaddr => afiaddr,
cfgtwr => cfgtwr,
afidm => afidm,
afiwdatavalid => afiwdatavalid,
avlread => avlread,
phyddiockndout => phyddiockndout,
iointckndout => iointckndout,
iointbadout => iointbadout,
cfgdevicewidth => cfgdevicewidth,
cfgcoladdrwidth => cfgcoladdrwidth,
iointdqdin => iointdqdin,
scanen => scanen,
afiwlat => afiwlat,
phyddiodqsoe => phyddiodqsoe,
cfgaddlat => cfgaddlat,
afirdataen => afirdataen,
phyddiodqslogicincrdataen => phyddiodqslogicincrdataen,
phyddiodqslogicoct => phyddiodqslogicoct,
iointdqsoe => iointdqsoe,
phyddiodqslogicaclrpstamble => phyddiodqslogicaclrpstamble,
phyddiodqsboe => phyddiodqsboe,
phyddiodqdout => phyddiodqdout,
iointaficalfail => iointaficalfail,
avlwritedata => avlwritedata,
iointdqsboe => iointdqsboe,
phyddiodqslogicreadlatency => phyddiodqslogicreadlatency,
iointwendout => iointwendout,
afiodt => afiodt,
iointcsndout => iointcsndout,
phyddiorasndout => phyddiorasndout,
phyddiocsndout => phyddiocsndout,
iointdqslogicoct => iointdqslogicoct,
softresetn => softresetn,
phyddiodqsdout => phyddiodqsdout,
iointafiwlat => iointafiwlat,
iointdqslogicdqsena => iointdqslogicdqsena,
afiba => afiba,
phyddiodqslogicdqsena => phyddiodqslogicdqsena,
pllavlclk => pllavlclk,
aficasn => aficasn,
cfgbankaddrwidth => cfgbankaddrwidth,
phyddiowendout => phyddiowendout,
phyddiockedout => phyddiockedout,
cfgdramconfig => cfgdramconfig,
aficsn => aficsn,
avlwaitrequest => avlwaitrequest,
phyddioodtdout => phyddioodtdout,
ddiophydqslogicrdatavalid => ddiophydqslogicrdatavalid,
avlwrite => avlwrite,
afirasn => afirasn,
plladdrcmdclk => plladdrcmdclk,
phyddioaddrdout => phyddioaddrdout,
aficalfail => aficalfail,
afimemclkdisable => afimemclkdisable,
afiwdata => afiwdata,
iointdqslogicreadlatency => iointdqslogicreadlatency,
phyddiodmdout => phyddiodmdout,
pllaficlk => pllaficlk,
cfgtrfc => cfgtrfc,
iointckdout => iointckdout,
aficke => aficke,
iointrasndout => iointrasndout,
phyddioresetndout => phyddioresetndout,
aficalsuccess => aficalsuccess,
ddiophydqdin => ddiophydqdin,
iointcasndout => iointcasndout,
iointdqsdout => iointdqsdout,
cfgcsaddrwidth => cfgcsaddrwidth,
phyddiockdout => phyddiockdout,
avlreaddata => avlreaddata,
afirdata => afirdata,
phyresetn => phyresetn,
iointdqslogicincrdataen => iointdqslogicincrdataen,
afiwen => afiwen,
globalresetn => globalresetn,
phyddiodqsbdout => phyddiodqsbdout,
plllocked => plllocked,
phyddiodqslogicfiforeset => phyddiodqslogicfiforeset,
iointdqslogicfiforeset => iointdqslogicfiforeset,
iointodtdout => iointodtdout,
iointafirlat => iointafirlat,
iointaficalsuccess => iointaficalsuccess,
iointdqdout => iointdqdout,
cfgrowaddrwidth => cfgrowaddrwidth,
phyddiodqslogicaclrfifoctrl => phyddiodqslogicaclrfifoctrl,
phyddiobadout => phyddiobadout,
afirdatavalid => afirdatavalid,
cfgtrefi => cfgtrefi,
cfgcaswrlat => cfgcaswrlat,
afirstn => afirstn,
avlresetn => avlresetn,
iointdqsbdout => iointdqsbdout,
phyddiodqoe => phyddiodqoe,
iointdqslogicrdatavalid => iointdqslogicrdatavalid,
avladdress => avladdress,
afidqsburst => afidqsburst,
iointdqslogicincwrptr => iointdqslogicincwrptr,
phyddiodqslogicincwrptr => phyddiodqslogicincwrptr,
cfgtcl => cfgtcl,
ctlresetn => ctlresetn,
cfginterfacewidth => cfginterfacewidth,
phyddiocasndout => phyddiocasndout,
afirdataenfull => afirdataenfull,
cfgtmrd => cfgtmrd,
iointdmdout => iointdmdout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_phy_clkbuf is
port (
outclk : out std_logic_vector(3 downto 0);
inclk : in std_logic_vector(3 downto 0) := (OTHERS => '0')
);
end cyclonev_phy_clkbuf;
architecture behavior of cyclonev_phy_clkbuf is
component cyclonev_phy_clkbuf_encrypted
port (
outclk : out std_logic_vector(3 downto 0);
inclk : in std_logic_vector(3 downto 0) := (OTHERS => '0')
);
end component;
begin
inst : cyclonev_phy_clkbuf_encrypted
port map (
outclk => outclk,
inclk => inclk
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_output_alignment is
generic (
power_up : string := "low";
async_mode : string := "none";
sync_mode : string := "none";
add_output_cycle_delay : string := "false";
add_2nd_output_cycle_delay : string := "false";
add_phase_transfer_reg : string := "false";
bypass_output_register : string := "false"
);
port (
datain : in std_logic := '1';
clk : in std_logic := '0';
areset : in std_logic := '0';
sreset : in std_logic := '0';
enaoutputcycledelay : in std_logic := '0';
ena2ndoutputcycledelay : in std_logic := '0';
enaphasetransferreg : in std_logic := '0';
dataout : out std_logic;
dffin : out std_logic;
dff1t : out std_logic;
dff2t : out std_logic;
dffphasetransfer : out std_logic
);
end cyclonev_output_alignment;
architecture behavior of cyclonev_output_alignment is
component cyclonev_output_alignment_encrypted
generic (
power_up : string := "low";
async_mode : string := "none";
sync_mode : string := "none";
add_output_cycle_delay : string := "false";
add_2nd_output_cycle_delay : string := "false";
add_phase_transfer_reg : string := "false";
bypass_output_register : string := "false"
);
port (
datain : in std_logic := '1';
clk : in std_logic := '0';
areset : in std_logic := '0';
sreset : in std_logic := '0';
enaoutputcycledelay : in std_logic := '0';
ena2ndoutputcycledelay : in std_logic := '0';
enaphasetransferreg : in std_logic := '0';
dataout : out std_logic;
dffin : out std_logic;
dff1t : out std_logic;
dff2t : out std_logic;
dffphasetransfer : out std_logic
);
end component;
begin
inst : cyclonev_output_alignment_encrypted
generic map (
power_up => power_up,
async_mode => async_mode,
sync_mode => sync_mode,
add_output_cycle_delay => add_output_cycle_delay,
add_2nd_output_cycle_delay => add_2nd_output_cycle_delay,
add_phase_transfer_reg => add_phase_transfer_reg,
bypass_output_register => bypass_output_register
)
port map (
datain => datain,
clk => clk,
areset => areset,
sreset => sreset,
enaoutputcycledelay => enaoutputcycledelay,
ena2ndoutputcycledelay => ena2ndoutputcycledelay,
enaphasetransferreg => enaphasetransferreg,
dataout => dataout,
dffin => dffin,
dff1t => dff1t,
dff2t => dff2t,
dffphasetransfer => dffphasetransfer
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_dll_output is
generic (
pll_dll_src : string := "vss"
);
port (
cclk : in std_logic_vector(17 downto 0);
clkin : in std_logic_vector(3 downto 0) := "0000";
clkout : out std_logic
);
end cyclonev_pll_dll_output;
architecture behavior of cyclonev_pll_dll_output is
component cyclonev_pll_dll_output_encrypted
generic (
pll_dll_src : string := "vss"
);
port (
cclk : in std_logic_vector(17 downto 0);
clkin : in std_logic_vector(3 downto 0);
clkout : out std_logic
);
end component;
begin
inst : cyclonev_pll_dll_output_encrypted
generic map (
pll_dll_src => pll_dll_src
)
port map (
cclk => cclk,
clkin => clkin,
clkout => clkout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_dpa_output is
generic (
output_clock_frequency : string := "";
pll_vcoph_div : integer := 1
);
port (
pd : in std_logic;
phin : in std_logic_vector(7 downto 0);
phout : out std_logic_vector(7 downto 0)
);
end cyclonev_pll_dpa_output;
architecture behavior of cyclonev_pll_dpa_output is
component cyclonev_pll_dpa_output_encrypted
generic (
output_clock_frequency : string := "";
pll_vcoph_div : integer := 1
);
port (
pd : in std_logic;
phin : in std_logic_vector(7 downto 0);
phout : out std_logic_vector(7 downto 0)
);
end component;
begin
inst : cyclonev_pll_dpa_output_encrypted
generic map (
output_clock_frequency => output_clock_frequency,
pll_vcoph_div => pll_vcoph_div
)
port map (
pd => pd,
phin => phin,
phout => phout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_extclk_output is
generic (
pll_extclk_cnt_src : string := "vss";
pll_extclk_enable : string := "true";
pll_extclk_invert : string := "false"
);
port (
cclk : in std_logic_vector(17 downto 0);
clken : in std_logic := '0';
mcnt0 : in std_logic := '0';
mcnt1 : in std_logic := '0';
extclk : out std_logic
);
end cyclonev_pll_extclk_output;
architecture behavior of cyclonev_pll_extclk_output is
component cyclonev_pll_extclk_output_encrypted
generic (
pll_extclk_cnt_src : string := "vss";
pll_extclk_enable : string := "true";
pll_extclk_invert : string := "false"
);
port (
cclk : in std_logic_vector(17 downto 0);
clken : in std_logic;
mcnt0 : in std_logic;
mcnt1 : in std_logic;
extclk : out std_logic
);
end component;
begin
inst : cyclonev_pll_extclk_output_encrypted
generic map (
pll_extclk_cnt_src => pll_extclk_cnt_src,
pll_extclk_enable => pll_extclk_enable,
pll_extclk_invert => pll_extclk_invert
)
port map (
cclk => cclk,
clken => clken,
mcnt0 => mcnt0,
mcnt1 => mcnt1,
extclk => extclk
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_lvds_output is
generic (
pll_loaden_coarse_dly : string := "0 ps";
pll_loaden_fine_dly : string := "0 ps";
pll_lvdsclk_coarse_dly : string := "0 ps";
pll_lvdsclk_fine_dly : string := "0 ps";
pll_loaden_enable_disable : string := "false";
pll_lvdsclk_enable_disable : string := "false"
);
port (
ccout : in std_logic_vector(1 downto 0);
loaden : out std_logic;
lvdsclk : out std_logic
);
end cyclonev_pll_lvds_output;
architecture behavior of cyclonev_pll_lvds_output is
component cyclonev_pll_lvds_output_encrypted
generic (
pll_loaden_coarse_dly : string := "0 ps";
pll_loaden_fine_dly : string := "0 ps";
pll_lvdsclk_coarse_dly : string := "0 ps";
pll_lvdsclk_fine_dly : string := "0 ps";
pll_loaden_enable_disable : string := "false";
pll_lvdsclk_enable_disable : string := "false"
);
port (
ccout : in std_logic_vector(1 downto 0);
loaden : out std_logic;
lvdsclk : out std_logic
);
end component;
begin
inst : cyclonev_pll_lvds_output_encrypted
generic map (
pll_loaden_coarse_dly => pll_loaden_coarse_dly,
pll_loaden_fine_dly => pll_loaden_fine_dly,
pll_lvdsclk_coarse_dly => pll_lvdsclk_coarse_dly,
pll_lvdsclk_fine_dly => pll_lvdsclk_fine_dly,
pll_loaden_enable_disable => pll_loaden_enable_disable,
pll_lvdsclk_enable_disable => pll_lvdsclk_enable_disable
)
port map (
ccout => ccout,
loaden => loaden,
lvdsclk => lvdsclk
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_output_counter is
generic (
duty_cycle : integer := 50;
output_clock_frequency : string := "";
phase_shift : string := "";
c_cnt_coarse_dly : string := "0 ps";
c_cnt_fine_dly : string := "0 ps";
c_cnt_in_src : string := "test_clk0";
c_cnt_ph_mux_prst : integer := 0;
cnt_fpll_src : string := "fpll_0";
c_cnt_prst : integer := 1;
dprio0_cnt_bypass_en : string := "false";
dprio0_cnt_hi_div : integer := 1;
dprio0_cnt_lo_div : integer := 1;
dprio0_cnt_odd_div_even_duty_en : string := "false";
fractional_pll_index : integer := 1;
output_counter_index : integer := 1
);
port (
cascadein : in std_logic := '0';
nen0 : in std_logic := '0';
shift0 : in std_logic := '0';
shiftdone0i : in std_logic := '0';
shiften : in std_logic := '0';
tclk0 : in std_logic := '0';
up0 : in std_logic := '0';
vco0ph : in std_logic_vector(7 downto 0) := (OTHERS => '0');
cascadeout : out std_logic;
divclk : out std_logic;
shiftdone0o : out std_logic
);
end cyclonev_pll_output_counter;
architecture behavior of cyclonev_pll_output_counter is
component cyclonev_pll_output_counter_encrypted
generic (
duty_cycle : integer := 50;
output_clock_frequency : string := "";
phase_shift : string := "";
c_cnt_coarse_dly : string := "0 ps";
c_cnt_fine_dly : string := "0 ps";
c_cnt_in_src : string := "test_clk0";
c_cnt_ph_mux_prst : integer := 0;
cnt_fpll_src : string := "fpll_0";
c_cnt_prst : integer := 1;
dprio0_cnt_bypass_en : string := "false";
dprio0_cnt_hi_div : integer := 1;
dprio0_cnt_lo_div : integer := 1;
dprio0_cnt_odd_div_even_duty_en : string := "false";
fractional_pll_index : integer := 1;
output_counter_index : integer := 1
);
port (
cascadein : in std_logic := '0';
nen0 : in std_logic := '0';
shift0 : in std_logic := '0';
shiftdone0i : in std_logic := '0';
shiften : in std_logic := '0';
tclk0 : in std_logic := '0';
up0 : in std_logic := '0';
vco0ph : in std_logic_vector(7 downto 0) := (OTHERS => '0');
cascadeout : out std_logic;
divclk : out std_logic;
shiftdone0o : out std_logic
);
end component;
begin
inst : cyclonev_pll_output_counter_encrypted
generic map (
duty_cycle => duty_cycle,
output_clock_frequency => output_clock_frequency,
phase_shift => phase_shift,
c_cnt_coarse_dly => c_cnt_coarse_dly,
c_cnt_fine_dly => c_cnt_fine_dly,
c_cnt_in_src => c_cnt_in_src,
c_cnt_ph_mux_prst => c_cnt_ph_mux_prst,
cnt_fpll_src => cnt_fpll_src,
c_cnt_prst => c_cnt_prst,
dprio0_cnt_bypass_en => dprio0_cnt_bypass_en,
dprio0_cnt_hi_div => dprio0_cnt_hi_div,
dprio0_cnt_lo_div => dprio0_cnt_lo_div,
dprio0_cnt_odd_div_even_duty_en => dprio0_cnt_odd_div_even_duty_en,
fractional_pll_index => fractional_pll_index,
output_counter_index => output_counter_index
)
port map (
cascadein => cascadein,
nen0 => nen0,
shift0 => shift0,
shiftdone0i => shiftdone0i,
shiften => shiften,
tclk0 => tclk0,
up0 => up0,
vco0ph => vco0ph,
cascadeout => cascadeout,
divclk => divclk,
shiftdone0o => shiftdone0o
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_reconfig is
generic (
fractional_pll_index : integer := 1
);
port (
addr : in std_logic_vector(5 downto 0) := (OTHERS => '0');
atpgmode : in std_logic := '0';
byteen : in std_logic_vector(1 downto 0) := (OTHERS => '0');
clk : in std_logic := '0';
cntnen : in std_logic := '0';
cntsel : in std_logic_vector(4 downto 0) := (OTHERS => '0');
din : in std_logic_vector(15 downto 0) := (OTHERS => '0');
fpllcsrtest : in std_logic := '0';
iocsrclkin : in std_logic := '0';
iocsrdatain : in std_logic := '0';
iocsren : in std_logic := '0';
iocsrrstn : in std_logic := '0';
mdiodis : in std_logic := '0';
mhi : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phaseen : in std_logic := '0';
read : in std_logic := '0';
rstn : in std_logic := '0';
scanen : in std_logic := '0';
sershiftload : in std_logic := '0';
shiftdonei : in std_logic := '0';
updn : in std_logic := '0';
write : in std_logic := '0';
blockselect : out std_logic;
dout : out std_logic_vector(15 downto 0);
dprioout : out std_logic_vector(815 downto 0);
iocsrdataout : out std_logic;
iocsrenbuf : out std_logic;
iocsrrstnbuf : out std_logic;
phasedone : out std_logic;
shift : out std_logic;
shiften : out std_logic_vector(8 downto 0);
shiftenm : out std_logic;
up : out std_logic
);
end cyclonev_pll_reconfig;
architecture behavior of cyclonev_pll_reconfig is
component cyclonev_pll_reconfig_encrypted
generic (
fractional_pll_index : integer := 1
);
port (
addr : in std_logic_vector(5 downto 0) := (OTHERS => '0');
atpgmode : in std_logic := '0';
byteen : in std_logic_vector(1 downto 0) := (OTHERS => '0');
clk : in std_logic := '0';
cntnen : in std_logic := '0';
cntsel : in std_logic_vector(4 downto 0) := (OTHERS => '0');
din : in std_logic_vector(15 downto 0) := (OTHERS => '0');
fpllcsrtest : in std_logic := '0';
iocsrclkin : in std_logic := '0';
iocsrdatain : in std_logic := '0';
iocsren : in std_logic := '0';
iocsrrstn : in std_logic := '0';
mdiodis : in std_logic := '0';
mhi : in std_logic_vector(7 downto 0) := (OTHERS => '0');
phaseen : in std_logic := '0';
read : in std_logic := '0';
rstn : in std_logic := '0';
scanen : in std_logic := '0';
sershiftload : in std_logic := '0';
shiftdonei : in std_logic := '0';
updn : in std_logic := '0';
write : in std_logic := '0';
blockselect : out std_logic;
dout : out std_logic_vector(15 downto 0);
dprioout : out std_logic_vector(815 downto 0);
iocsrdataout : out std_logic;
iocsrenbuf : out std_logic;
iocsrrstnbuf : out std_logic;
phasedone : out std_logic;
shift : out std_logic;
shiften : out std_logic_vector(8 downto 0);
shiftenm : out std_logic;
up : out std_logic
);
end component;
begin
inst : cyclonev_pll_reconfig_encrypted
generic map (
fractional_pll_index => fractional_pll_index
)
port map (
addr => addr,
atpgmode => atpgmode,
byteen => byteen,
clk => clk,
cntnen => cntnen,
cntsel => cntsel,
din => din,
fpllcsrtest => fpllcsrtest,
iocsrclkin => iocsrclkin,
iocsrdatain => iocsrdatain,
iocsren => iocsren,
iocsrrstn => iocsrrstn,
mdiodis => mdiodis,
mhi => mhi,
phaseen => phaseen,
read => read,
rstn => rstn,
scanen => scanen,
sershiftload => sershiftload,
shiftdonei => shiftdonei,
updn => updn,
write => write,
blockselect => blockselect,
dout => dout,
dprioout => dprioout,
iocsrdataout => iocsrdataout,
iocsrenbuf => iocsrenbuf,
iocsrrstnbuf => iocsrrstnbuf,
phasedone => phasedone,
shift => shift,
shiften => shiften,
shiftenm => shiftenm,
up => up
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_pll_refclk_select is
generic (
pll_auto_clk_sw_en : string := "false";
pll_clk_loss_edge : string := "both_edges";
pll_clk_loss_sw_en : string := "false";
pll_clk_sw_dly : integer := 0;
pll_clkin_0_src : string := "ref_clk0";
pll_clkin_1_src : string := "ref_clk1";
pll_manu_clk_sw_en : string := "false";
pll_sw_refclk_src : string := "clk_0"
);
port (
adjpllin : in std_logic := '0';
cclk : in std_logic := '0';
clkin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
coreclkin : in std_logic := '0';
extswitch : in std_logic := '0';
iqtxrxclkin : in std_logic := '0';
plliqclkin : in std_logic := '0';
refiqclk : in std_logic_vector(1 downto 0) := (OTHERS => '0');
rxiqclkin : in std_logic := '0';
pllen : in std_logic := '0';
clk0bad : out std_logic;
clk1bad : out std_logic;
clkout : out std_logic;
extswitchbuf : out std_logic;
pllclksel : out std_logic
);
end cyclonev_pll_refclk_select;
architecture behavior of cyclonev_pll_refclk_select is
component cyclonev_pll_refclk_select_encrypted
generic (
pll_auto_clk_sw_en : string := "false";
pll_clk_loss_edge : string := "both_edges";
pll_clk_loss_sw_en : string := "false";
pll_clk_sw_dly : integer := 0;
pll_clkin_0_src : string := "ref_clk0";
pll_clkin_1_src : string := "ref_clk1";
pll_manu_clk_sw_en : string := "false";
pll_sw_refclk_src : string := "clk_0"
);
port (
adjpllin : in std_logic := '0';
cclk : in std_logic := '0';
clkin : in std_logic_vector(3 downto 0) := (OTHERS => '0');
coreclkin : in std_logic := '0';
extswitch : in std_logic := '0';
iqtxrxclkin : in std_logic := '0';
plliqclkin : in std_logic := '0';
refiqclk : in std_logic_vector(1 downto 0) := (OTHERS => '0');
rxiqclkin : in std_logic := '0';
pllen : in std_logic := '0';
clk0bad : out std_logic;
clk1bad : out std_logic;
clkout : out std_logic;
extswitchbuf : out std_logic;
pllclksel : out std_logic
);
end component;
begin
inst : cyclonev_pll_refclk_select_encrypted
generic map (
pll_auto_clk_sw_en => pll_auto_clk_sw_en,
pll_clk_loss_edge => pll_clk_loss_edge,
pll_clk_loss_sw_en => pll_clk_loss_sw_en,
pll_clk_sw_dly => pll_clk_sw_dly,
pll_clkin_0_src => pll_clkin_0_src,
pll_clkin_1_src => pll_clkin_1_src,
pll_manu_clk_sw_en => pll_manu_clk_sw_en,
pll_sw_refclk_src => pll_sw_refclk_src
)
port map (
adjpllin => adjpllin,
cclk => cclk,
clkin => clkin,
coreclkin => coreclkin,
extswitch => extswitch,
iqtxrxclkin => iqtxrxclkin,
plliqclkin => plliqclkin,
refiqclk => refiqclk,
rxiqclkin => rxiqclkin,
pllen => pllen,
clk0bad => clk0bad,
clk1bad => clk1bad,
clkout => clkout,
extswitchbuf => extswitchbuf,
pllclksel => pllclksel
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_termination_logic is
generic (
lpm_type : string := "cyclonev_termination_logic";
a_iob_oct_test : string := "a_iob_oct_test_off"
);
port (
s2pload : in std_logic := '0';
serdata : in std_logic := '0';
scanenable : in std_logic := '0';
scanin : in std_logic := '0';
scanclk : in std_logic := '0';
scanout : out std_logic;
seriesterminationcontrol : out std_logic_vector(15 downto 0);
parallelterminationcontrol : out std_logic_vector(15 downto 0)
);
end cyclonev_termination_logic;
architecture behavior of cyclonev_termination_logic is
component cyclonev_termination_logic_encrypted
generic (
lpm_type : string := "cyclonev_termination_logic";
a_iob_oct_test : string := "a_iob_oct_test_off"
);
port (
s2pload : in std_logic;
serdata : in std_logic;
scanenable : in std_logic;
scanin : in std_logic;
scanclk : in std_logic;
scanout : out std_logic;
seriesterminationcontrol : out std_logic_vector(15 downto 0);
parallelterminationcontrol : out std_logic_vector(15 downto 0)
);
end component;
begin
inst : cyclonev_termination_logic_encrypted
generic map (
lpm_type => lpm_type,
a_iob_oct_test => a_iob_oct_test
)
port map (
s2pload => s2pload,
serdata => serdata,
scanenable => scanenable,
scanin => scanin,
scanclk => scanclk,
scanout => scanout,
seriesterminationcontrol => seriesterminationcontrol,
parallelterminationcontrol => parallelterminationcontrol
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_termination is
generic (
lpm_type : string := "cyclonev_termination";
a_oct_nclrusr_inv : string := "a_oct_nclrusr_inv_off";
a_oct_pwrdn : string := "true";
a_oct_clkdiv : string := "a_oct_clkdiv_20";
a_oct_intosc : string := "a_oct_intosc_2";
a_oct_vref : string := "a_oct_vref_rupm_rdnm";
a_oct_test_0 : string := "a_oct_test_0_off";
a_oct_test_1 : string := "a_oct_test_1_off";
a_oct_test_2 : string := "a_oct_test_2_off";
a_oct_test_3 : string := "a_oct_test_3_off";
a_oct_test_4 : string := "a_oct_test_4_off";
a_oct_test_5 : string := "a_oct_test_5_off";
a_oct_pllbiasen : string := "a_oct_pllbiasen_low";
a_oct_usermode : string := "false"
);
port (
rzqin : in std_logic := '0';
enserusr : in std_logic := '0';
nclrusr : in std_logic := '0';
clkenusr : in std_logic := '0';
clkusr : in std_logic := '0';
serdatafromcore : in std_logic := '0';
scanclk : in std_logic := '0';
otherenser : in std_logic_vector(8 downto 0) := (OTHERS => '0');
serdataout : out std_logic;
enserout : out std_logic;
compoutrup : out std_logic;
compoutrdn : out std_logic;
serdatatocore : out std_logic;
scanin : out std_logic;
scanout : out std_logic
);
end cyclonev_termination;
architecture behavior of cyclonev_termination is
component cyclonev_termination_encrypted
generic (
lpm_type : string := "cyclonev_termination";
a_oct_nclrusr_inv : string := "a_oct_nclrusr_inv_off";
a_oct_pwrdn : string := "true";
a_oct_clkdiv : string := "a_oct_clkdiv_20";
a_oct_intosc : string := "a_oct_intosc_2";
a_oct_vref : string := "a_oct_vref_rupm_rdnm";
a_oct_test_0 : string := "a_oct_test_0_off";
a_oct_test_1 : string := "a_oct_test_1_off";
a_oct_test_2 : string := "a_oct_test_2_off";
a_oct_test_3 : string := "a_oct_test_3_off";
a_oct_test_4 : string := "a_oct_test_4_off";
a_oct_test_5 : string := "a_oct_test_5_off";
a_oct_pllbiasen : string := "a_oct_pllbiasen_low";
a_oct_usermode : string := "false"
);
port (
rzqin : in std_logic;
enserusr : in std_logic;
nclrusr : in std_logic;
clkenusr : in std_logic;
clkusr : in std_logic;
serdatafromcore : in std_logic;
scanclk : in std_logic;
otherenser : in std_logic_vector(8 downto 0);
serdataout : out std_logic;
enserout : out std_logic;
compoutrup : out std_logic;
compoutrdn : out std_logic;
serdatatocore : out std_logic;
scanin : out std_logic;
scanout : out std_logic
);
end component;
begin
inst : cyclonev_termination_encrypted
generic map (
lpm_type => lpm_type,
a_oct_nclrusr_inv => a_oct_nclrusr_inv,
a_oct_pwrdn => a_oct_pwrdn,
a_oct_clkdiv => a_oct_clkdiv,
a_oct_intosc => a_oct_intosc,
a_oct_vref => a_oct_vref,
a_oct_test_0 => a_oct_test_0,
a_oct_test_1 => a_oct_test_1,
a_oct_test_2 => a_oct_test_2,
a_oct_test_3 => a_oct_test_3,
a_oct_test_4 => a_oct_test_4,
a_oct_test_5 => a_oct_test_5,
a_oct_pllbiasen => a_oct_pllbiasen,
a_oct_usermode => a_oct_usermode
)
port map (
rzqin => rzqin,
enserusr => enserusr,
nclrusr => nclrusr,
clkenusr => clkenusr,
clkusr => clkusr,
serdatafromcore => serdatafromcore,
scanclk => scanclk,
otherenser => otherenser,
serdataout => serdataout,
enserout => enserout,
compoutrup => compoutrup,
compoutrdn => compoutrdn,
serdatatocore => serdatatocore,
scanin => scanin,
scanout => scanout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_asmiblock is
generic (
lpm_type : string := "cyclonev_asmiblock";
enable_sim : string := "false"
);
port (
dclk : in std_logic;
sce : in std_logic;
oe : in std_logic;
data0out : in std_logic;
data1out : in std_logic;
data2out : in std_logic;
data3out : in std_logic;
data0oe : in std_logic;
data1oe : in std_logic;
data2oe : in std_logic;
data3oe : in std_logic;
data0in : out std_logic;
data1in : out std_logic;
data2in : out std_logic;
data3in : out std_logic;
spidclk : out std_logic;
spidataout : out std_logic_vector(3 downto 0);
spisce : out std_logic;
spidatain : in std_logic_vector(3 downto 0)
);
end cyclonev_asmiblock;
architecture behavior of cyclonev_asmiblock is
component cyclonev_asmiblock_encrypted
generic (
lpm_type : string := "cyclonev_asmiblock";
enable_sim : string := "false"
);
port (
dclk : in std_logic;
sce : in std_logic;
oe : in std_logic;
data0out : in std_logic;
data1out : in std_logic;
data2out : in std_logic;
data3out : in std_logic;
data0oe : in std_logic;
data1oe : in std_logic;
data2oe : in std_logic;
data3oe : in std_logic;
data0in : out std_logic;
data1in : out std_logic;
data2in : out std_logic;
data3in : out std_logic;
spidclk : out std_logic;
spidataout : out std_logic_vector(3 downto 0);
spisce : out std_logic;
spidatain : in std_logic_vector(3 downto 0)
);
end component;
begin
inst : cyclonev_asmiblock_encrypted
generic map (
lpm_type => lpm_type,
enable_sim => enable_sim
)
port map (
dclk => dclk,
sce => sce,
oe => oe,
data0out => data0out,
data1out => data1out,
data2out => data2out,
data3out => data3out,
data0oe => data0oe,
data1oe => data1oe,
data2oe => data2oe,
data3oe => data3oe,
data0in => data0in,
data1in => data1in,
data2in => data2in,
data3in => data3in,
spidclk => spidclk,
spidataout => spidataout,
spisce => spisce,
spidatain => spidatain
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_chipidblock is
generic (
lpm_type : string := "cyclonev_chipidblock";
ID_VALUE : std_logic_vector(63 downto 0) := (others => '1')
);
port (
clk : in std_logic;
shiftnld : in std_logic;
regout : out std_logic
);
end cyclonev_chipidblock;
architecture behavior of cyclonev_chipidblock is
component cyclonev_chipidblock_encrypted
generic (
lpm_type : string := "cyclonev_chipidblock";
ID_VALUE : std_logic_vector(63 downto 0) := (others => '1')
);
port (
clk : in std_logic;
shiftnld : in std_logic;
regout : out std_logic
);
end component;
begin
inst : cyclonev_chipidblock_encrypted
generic map (
lpm_type => lpm_type,
ID_VALUE => ID_VALUE
)
port map (
clk => clk,
shiftnld => shiftnld,
regout => regout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_controller is
generic (
lpm_type : string := "cyclonev_controller"
);
port (
nceout : out std_logic
);
end cyclonev_controller;
architecture behavior of cyclonev_controller is
component cyclonev_controller_encrypted
generic (
lpm_type : string := "cyclonev_controller"
);
port (
nceout : out std_logic
);
end component;
begin
inst : cyclonev_controller_encrypted
generic map (
lpm_type => lpm_type
)
port map (
nceout => nceout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_crcblock is
generic (
oscillator_divider : integer := 256;
error_delay : integer := 0;
error_dra_dl_bypass : string := "false";
crc_deld_disable : string := "false";
triple_adj_err_correction : string := "false";
quad_adj_err_correction : string := "false";
lpm_type : string := "cyclonev_crcblock"
);
port (
clk : in std_logic;
shiftnld : in std_logic;
crcerror : out std_logic;
regout : out std_logic;
endofedfullchip : out std_logic
);
end cyclonev_crcblock;
architecture behavior of cyclonev_crcblock is
component cyclonev_crcblock_encrypted
generic (
oscillator_divider : integer := 256;
error_delay : integer := 0;
error_dra_dl_bypass : string := "false";
crc_deld_disable : string := "false";
triple_adj_err_correction : string := "false";
quad_adj_err_correction : string := "false";
lpm_type : string := "cyclonev_crcblock"
);
port (
clk : in std_logic;
shiftnld : in std_logic;
crcerror : out std_logic;
regout : out std_logic;
endofedfullchip : out std_logic
);
end component;
begin
inst : cyclonev_crcblock_encrypted
generic map (
oscillator_divider => oscillator_divider,
error_delay => error_delay,
error_dra_dl_bypass => error_dra_dl_bypass,
crc_deld_disable => crc_deld_disable,
triple_adj_err_correction => triple_adj_err_correction,
quad_adj_err_correction => quad_adj_err_correction,
lpm_type => lpm_type
)
port map (
clk => clk,
shiftnld => shiftnld,
crcerror => crcerror,
regout => regout,
endofedfullchip => endofedfullchip
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_jtag is
generic (
lpm_type : string := "cyclonev_jtag"
);
port (
tms : in std_logic := '0';
tck : in std_logic := '0';
tdi : in std_logic := '0';
ntrst : in std_logic := '0';
tdoutap : in std_logic := '0';
tdouser : in std_logic := '0';
tdo : out std_logic;
tmsutap : out std_logic;
tckutap : out std_logic;
tdiutap : out std_logic;
shiftuser : out std_logic;
clkdruser : out std_logic;
updateuser : out std_logic;
runidleuser : out std_logic;
usr1user : out std_logic
);
end cyclonev_jtag;
architecture behavior of cyclonev_jtag is
component cyclonev_jtag_encrypted
generic (
lpm_type : string := "cyclonev_jtag"
);
port (
tms : in std_logic;
tck : in std_logic;
tdi : in std_logic;
ntrst : in std_logic;
tdoutap : in std_logic;
tdouser : in std_logic;
tdo : out std_logic;
tmsutap : out std_logic;
tckutap : out std_logic;
tdiutap : out std_logic;
shiftuser : out std_logic;
clkdruser : out std_logic;
updateuser : out std_logic;
runidleuser : out std_logic;
usr1user : out std_logic
);
end component;
begin
inst : cyclonev_jtag_encrypted
generic map (
lpm_type => lpm_type
)
port map (
tms => tms,
tck => tck,
tdi => tdi,
ntrst => ntrst,
tdoutap => tdoutap,
tdouser => tdouser,
tdo => tdo,
tmsutap => tmsutap,
tckutap => tckutap,
tdiutap => tdiutap,
shiftuser => shiftuser,
clkdruser => clkdruser,
updateuser => updateuser,
runidleuser => runidleuser,
usr1user => usr1user
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_prblock is
generic (
lpm_type : string := "cyclonev_prblock"
);
port (
clk : in std_logic;
corectl : in std_logic;
prrequest : in std_logic;
data : in std_logic_vector(15 downto 0);
externalrequest : out std_logic;
error : out std_logic;
ready : out std_logic;
done : out std_logic
);
end cyclonev_prblock;
architecture behavior of cyclonev_prblock is
component cyclonev_prblock_encrypted
generic (
lpm_type : string := "cyclonev_prblock"
);
port (
clk : in std_logic;
corectl : in std_logic;
prrequest : in std_logic;
data : in std_logic_vector(15 downto 0);
externalrequest : out std_logic;
error : out std_logic;
ready : out std_logic;
done : out std_logic
);
end component;
begin
inst : cyclonev_prblock_encrypted
generic map (
lpm_type => lpm_type
)
port map (
clk => clk,
corectl => corectl,
prrequest => prrequest,
data => data,
externalrequest => externalrequest,
error => error,
ready => ready,
done => done
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_rublock is
generic (
sim_init_watchdog_value : integer := 0;
sim_init_status : integer := 0;
sim_init_config_is_application : string := "false";
sim_init_watchdog_enabled : string := "false";
lpm_type : string := "cyclonev_rublock"
);
port (
clk : in std_logic;
shiftnld : in std_logic;
captnupdt : in std_logic;
regin : in std_logic;
rsttimer : in std_logic;
rconfig : in std_logic;
regout : out std_logic
);
end cyclonev_rublock;
architecture behavior of cyclonev_rublock is
component cyclonev_rublock_encrypted
generic (
sim_init_watchdog_value : integer := 0;
sim_init_status : integer := 0;
sim_init_config_is_application : string := "false";
sim_init_watchdog_enabled : string := "false";
lpm_type : string := "cyclonev_rublock"
);
port (
clk : in std_logic;
shiftnld : in std_logic;
captnupdt : in std_logic;
regin : in std_logic;
rsttimer : in std_logic;
rconfig : in std_logic;
regout : out std_logic
);
end component;
begin
inst : cyclonev_rublock_encrypted
generic map (
sim_init_watchdog_value => sim_init_watchdog_value,
sim_init_status => sim_init_status,
sim_init_config_is_application => sim_init_config_is_application,
sim_init_watchdog_enabled => sim_init_watchdog_enabled,
lpm_type => lpm_type
)
port map (
clk => clk,
shiftnld => shiftnld,
captnupdt => captnupdt,
regin => regin,
rsttimer => rsttimer,
rconfig => rconfig,
regout => regout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_tsdblock is
generic (
clock_divider_enable : string := "on";
clock_divider_value : integer := 40;
sim_tsdcalo : integer := 0;
lpm_type : string := "cyclonev_tsdblock"
);
port (
clk : in std_logic;
ce : in std_logic;
clr : in std_logic;
tsdcalo : out std_logic_vector(7 downto 0);
tsdcaldone : out std_logic
);
end cyclonev_tsdblock;
architecture behavior of cyclonev_tsdblock is
component cyclonev_tsdblock_encrypted
generic (
clock_divider_enable : string := "on";
clock_divider_value : integer := 40;
sim_tsdcalo : integer := 0;
lpm_type : string := "cyclonev_tsdblock"
);
port (
clk : in std_logic;
ce : in std_logic;
clr : in std_logic;
tsdcalo : out std_logic_vector(7 downto 0);
tsdcaldone : out std_logic
);
end component;
begin
inst : cyclonev_tsdblock_encrypted
generic map (
clock_divider_enable => clock_divider_enable,
clock_divider_value => clock_divider_value,
sim_tsdcalo => sim_tsdcalo,
lpm_type => lpm_type
)
port map (
clk => clk,
ce => ce,
clr => clr,
tsdcalo => tsdcalo,
tsdcaldone => tsdcaldone
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_read_fifo is
generic (
use_half_rate_read : string := "false"
);
port (
datain : in std_logic_vector(1 downto 0) := (OTHERS => '0');
wclk : in std_logic := '0';
we : in std_logic := '0';
rclk : in std_logic := '0';
re : in std_logic := '0';
areset : in std_logic := '0';
plus2 : in std_logic := '0';
dataout : out std_logic_vector(3 downto 0)
);
end cyclonev_read_fifo;
architecture behavior of cyclonev_read_fifo is
component cyclonev_read_fifo_encrypted
generic (
use_half_rate_read : string := "false"
);
port (
datain : in std_logic_vector(1 downto 0) := (OTHERS => '0');
wclk : in std_logic := '0';
we : in std_logic := '0';
rclk : in std_logic := '0';
re : in std_logic := '0';
areset : in std_logic := '0';
plus2 : in std_logic := '0';
dataout : out std_logic_vector(3 downto 0)
);
end component;
begin
inst : cyclonev_read_fifo_encrypted
generic map (
use_half_rate_read => use_half_rate_read
)
port map (
datain => datain,
wclk => wclk,
we => we,
rclk => rclk,
re => re,
areset => areset,
plus2 => plus2,
dataout => dataout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_read_fifo_read_enable is
generic (
use_stalled_read_enable : string := "false"
);
port (
re : in std_logic := '1';
rclk : in std_logic := '0';
plus2 : in std_logic := '0';
areset : in std_logic := '0';
reout : out std_logic;
plus2out : out std_logic
);
end cyclonev_read_fifo_read_enable;
architecture behavior of cyclonev_read_fifo_read_enable is
component cyclonev_read_fifo_read_enable_encrypted
generic (
use_stalled_read_enable : string := "false"
);
port (
re : in std_logic := '1';
rclk : in std_logic := '0';
plus2 : in std_logic := '0';
areset : in std_logic := '0';
reout : out std_logic;
plus2out : out std_logic
);
end component;
begin
inst : cyclonev_read_fifo_read_enable_encrypted
generic map (
use_stalled_read_enable => use_stalled_read_enable
)
port map (
re => re,
rclk => rclk,
plus2 => plus2,
areset => areset,
reout => reout,
plus2out => plus2out
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_mac is
generic (
ax_width : integer := 16;
ay_scan_in_width : integer := 16;
az_width : integer := 1;
bx_width : integer := 16;
by_width : integer := 16;
bz_width : integer := 1;
scan_out_width : integer := 1;
result_a_width : integer := 33;
result_b_width : integer := 1;
operation_mode : string := "m18x18_sumof2";
mode_sub_location : integer := 0;
operand_source_max : string := "input";
operand_source_may : string := "input";
operand_source_mbx : string := "input";
operand_source_mby : string := "input";
preadder_subtract_a : string := "false";
preadder_subtract_b : string := "false";
signed_max : string := "false";
signed_may : string := "false";
signed_mbx : string := "false";
signed_mby : string := "false";
ay_use_scan_in : string := "false";
by_use_scan_in : string := "false";
delay_scan_out_ay : string := "false";
delay_scan_out_by : string := "false";
use_chainadder : string := "false";
enable_double_accum : string := "false";
load_const_value : integer := 0;
coef_a_0 : integer := 0;
coef_a_1 : integer := 0;
coef_a_2 : integer := 0;
coef_a_3 : integer := 0;
coef_a_4 : integer := 0;
coef_a_5 : integer := 0;
coef_a_6 : integer := 0;
coef_a_7 : integer := 0;
coef_b_0 : integer := 0;
coef_b_1 : integer := 0;
coef_b_2 : integer := 0;
coef_b_3 : integer := 0;
coef_b_4 : integer := 0;
coef_b_5 : integer := 0;
coef_b_6 : integer := 0;
coef_b_7 : integer := 0;
ax_clock : string := "none";
ay_scan_in_clock : string := "none";
az_clock : string := "none";
bx_clock : string := "none";
by_clock : string := "none";
bz_clock : string := "none";
coef_sel_a_clock : string := "none";
coef_sel_b_clock : string := "none";
sub_clock : string := "none";
negate_clock : string := "none";
accumulate_clock : string := "none";
load_const_clock : string := "none";
output_clock : string := "none"
);
port (
sub : in std_logic := '0';
negate : in std_logic := '0';
accumulate : in std_logic := '0';
loadconst : in std_logic := '0';
ax : in std_logic_vector(ax_width-1 downto 0) := (others => '0');
ay : in std_logic_vector(ay_scan_in_width-1 downto 0) := (others => '0');
scanin : in std_logic_vector(ay_scan_in_width-1 downto 0) := (others => '0');
az : in std_logic_vector(az_width-1 downto 0) := (others => '0');
bx : in std_logic_vector(bx_width-1 downto 0) := (others => '0');
by : in std_logic_vector(by_width-1 downto 0) := (others => '0');
bz : in std_logic_vector(bz_width-1 downto 0) := (others => '0');
coefsela : in std_logic_vector(2 downto 0) := (others => '0');
coefselb : in std_logic_vector(2 downto 0) := (others => '0');
chainin : in std_logic_vector(63 downto 0) := (others => '0');
clk : in std_logic_vector(2 downto 0) := (others => '0');
aclr : in std_logic_vector(1 downto 0) := (others => '0');
ena : in std_logic_vector(2 downto 0) := (others => '1');
dftout : out std_logic;
resulta : out std_logic_vector(result_a_width-1 downto 0);
resultb : out std_logic_vector(result_b_width-1 downto 0);
scanout : out std_logic_vector(scan_out_width-1 downto 0);
chainout : out std_logic_vector(63 downto 0)
);
end cyclonev_mac;
architecture behavior of cyclonev_mac is
component cyclonev_mac_encrypted
generic (
ax_width : integer;
ay_scan_in_width : integer;
az_width : integer;
bx_width : integer;
by_width : integer;
bz_width : integer;
scan_out_width : integer;
result_a_width : integer;
result_b_width : integer;
operation_mode : string;
mode_sub_location : integer;
operand_source_max : string;
operand_source_may : string;
operand_source_mbx : string;
operand_source_mby : string;
preadder_subtract_a : string;
preadder_subtract_b : string;
signed_max : string;
signed_may : string;
signed_mbx : string;
signed_mby : string;
ay_use_scan_in : string;
by_use_scan_in : string;
delay_scan_out_ay : string;
delay_scan_out_by : string;
use_chainadder : string;
enable_double_accum : string;
load_const_value : integer;
coef_a_0 : integer;
coef_a_1 : integer;
coef_a_2 : integer;
coef_a_3 : integer;
coef_a_4 : integer;
coef_a_5 : integer;
coef_a_6 : integer;
coef_a_7 : integer;
coef_b_0 : integer;
coef_b_1 : integer;
coef_b_2 : integer;
coef_b_3 : integer;
coef_b_4 : integer;
coef_b_5 : integer;
coef_b_6 : integer;
coef_b_7 : integer;
ax_clock : string;
ay_scan_in_clock : string;
az_clock : string;
bx_clock : string;
by_clock : string;
bz_clock : string;
coef_sel_a_clock : string;
coef_sel_b_clock : string;
sub_clock : string;
negate_clock : string;
accumulate_clock : string;
load_const_clock : string;
output_clock : string
);
port (
sub : in std_logic;
negate : in std_logic;
accumulate : in std_logic;
loadconst : in std_logic;
ax : in std_logic_vector(ax_width-1 downto 0);
ay : in std_logic_vector(ay_scan_in_width-1 downto 0);
scanin : in std_logic_vector(ay_scan_in_width-1 downto 0);
az : in std_logic_vector(az_width-1 downto 0);
bx : in std_logic_vector(bx_width-1 downto 0);
by : in std_logic_vector(by_width-1 downto 0);
bz : in std_logic_vector(bz_width-1 downto 0);
coefsela : in std_logic_vector(2 downto 0);
coefselb : in std_logic_vector(2 downto 0);
chainin : in std_logic_vector(63 downto 0);
clk : in std_logic_vector(2 downto 0);
aclr : in std_logic_vector(1 downto 0);
ena : in std_logic_vector(2 downto 0);
dftout : out std_logic;
resulta : out std_logic_vector(result_a_width-1 downto 0);
resultb : out std_logic_vector(result_b_width-1 downto 0);
scanout : out std_logic_vector(scan_out_width-1 downto 0);
chainout : out std_logic_vector(63 downto 0)
);
end component;
begin
inst : cyclonev_mac_encrypted
generic map (
ax_width => ax_width,
ay_scan_in_width => ay_scan_in_width,
az_width => az_width,
bx_width => bx_width,
by_width => by_width,
bz_width => bz_width,
scan_out_width => scan_out_width,
result_a_width => result_a_width,
result_b_width => result_b_width,
operation_mode => operation_mode,
mode_sub_location => mode_sub_location,
operand_source_max => operand_source_max,
operand_source_may => operand_source_may,
operand_source_mbx => operand_source_mbx,
operand_source_mby => operand_source_mby,
preadder_subtract_a => preadder_subtract_a,
preadder_subtract_b => preadder_subtract_b,
signed_max => signed_max,
signed_may => signed_may,
signed_mbx => signed_mbx,
signed_mby => signed_mby,
ay_use_scan_in => ay_use_scan_in,
by_use_scan_in => by_use_scan_in,
delay_scan_out_ay => delay_scan_out_ay,
delay_scan_out_by => delay_scan_out_by,
use_chainadder => use_chainadder,
enable_double_accum => enable_double_accum,
load_const_value => load_const_value,
coef_a_0 => coef_a_0,
coef_a_1 => coef_a_1,
coef_a_2 => coef_a_2,
coef_a_3 => coef_a_3,
coef_a_4 => coef_a_4,
coef_a_5 => coef_a_5,
coef_a_6 => coef_a_6,
coef_a_7 => coef_a_7,
coef_b_0 => coef_b_0,
coef_b_1 => coef_b_1,
coef_b_2 => coef_b_2,
coef_b_3 => coef_b_3,
coef_b_4 => coef_b_4,
coef_b_5 => coef_b_5,
coef_b_6 => coef_b_6,
coef_b_7 => coef_b_7,
ax_clock => ax_clock,
ay_scan_in_clock => ay_scan_in_clock,
az_clock => az_clock,
bx_clock => bx_clock,
by_clock => by_clock,
bz_clock => bz_clock,
coef_sel_a_clock => coef_sel_a_clock,
coef_sel_b_clock => coef_sel_b_clock,
sub_clock => sub_clock,
negate_clock => negate_clock,
accumulate_clock => accumulate_clock,
load_const_clock => load_const_clock,
output_clock => output_clock
)
port map (
sub => sub,
negate => negate,
accumulate => accumulate,
loadconst => loadconst,
ax => ax,
ay => ay,
scanin => scanin,
az => az,
bx => bx,
by => by,
bz => bz,
coefsela => coefsela,
coefselb => coefselb,
chainin => chainin,
clk => clk,
aclr => aclr,
ena => ena,
dftout => dftout,
resulta => resulta,
resultb => resultb,
scanout => scanout,
chainout => chainout
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_ir_fifo_userdes is
generic (
a_rb_bypass_serializer : string := "false";
a_use_dynamic_fifo_mode : string := "false";
a_rb_fifo_mode : string := "serializer_mode";
a_rb_data_width : integer := 9;
a_enable_soft_cdr : string := "false";
a_rb_tx_outclk : string := "false";
a_rb_bslipcfg : integer := 0;
a_sim_wclk_pre_delay : integer := 0;
a_sim_readenable_pre_delay : integer := 0
);
port (
bslipmax : out std_logic;
dynfifomode : in std_logic_vector(2 downto 0) := (OTHERS => '0');
observableout : out std_logic;
writeenable : in std_logic := '0';
readclk : in std_logic := '0';
txin : in std_logic_vector(9 downto 0) := (OTHERS => '0');
regscanovrd : in std_logic := '0';
rxout : out std_logic_vector(9 downto 0);
bslipout : out std_logic;
rstn : in std_logic := '0';
loaden : in std_logic := '0';
lvdsmodeen : out std_logic;
bslipctl : in std_logic := '0';
observablefout3 : out std_logic;
scanin : in std_logic := '0';
readenable : in std_logic := '0';
scanout : out std_logic;
writeclk : in std_logic := '0';
observablefout2 : out std_logic;
dinfiforx : in std_logic_vector(1 downto 0) := (OTHERS => '0');
tstclk : in std_logic := '0';
observablefout4 : out std_logic;
observablefout1 : out std_logic;
dout : out std_logic_vector(3 downto 0);
bslipin : in std_logic := '0';
txout : out std_logic;
regscan : in std_logic := '0';
observablewaddrcnt : out std_logic;
lvdstxsel : out std_logic
);
end cyclonev_ir_fifo_userdes;
architecture behavior of cyclonev_ir_fifo_userdes is
component cyclonev_ir_fifo_userdes_encrypted
generic (
a_rb_bypass_serializer : string := "false";
a_use_dynamic_fifo_mode : string := "false";
a_rb_fifo_mode : string := "serializer_mode";
a_rb_data_width : integer := 9;
a_enable_soft_cdr : string := "false";
a_rb_tx_outclk : string := "false";
a_rb_bslipcfg : integer := 0;
a_sim_wclk_pre_delay : integer := 0;
a_sim_readenable_pre_delay : integer := 0
);
port (
bslipmax : out std_logic;
dynfifomode : in std_logic_vector(2 downto 0) := (OTHERS => '0');
observableout : out std_logic;
writeenable : in std_logic := '0';
readclk : in std_logic := '0';
txin : in std_logic_vector(9 downto 0) := (OTHERS => '0');
regscanovrd : in std_logic := '0';
rxout : out std_logic_vector(9 downto 0);
bslipout : out std_logic;
rstn : in std_logic := '0';
loaden : in std_logic := '0';
lvdsmodeen : out std_logic;
bslipctl : in std_logic := '0';
observablefout3 : out std_logic;
scanin : in std_logic := '0';
readenable : in std_logic := '0';
scanout : out std_logic;
writeclk : in std_logic := '0';
observablefout2 : out std_logic;
dinfiforx : in std_logic_vector(1 downto 0) := (OTHERS => '0');
tstclk : in std_logic := '0';
observablefout4 : out std_logic;
observablefout1 : out std_logic;
dout : out std_logic_vector(3 downto 0);
bslipin : in std_logic := '0';
txout : out std_logic;
regscan : in std_logic := '0';
observablewaddrcnt : out std_logic;
lvdstxsel : out std_logic
);
end component;
begin
inst : cyclonev_ir_fifo_userdes_encrypted
generic map (
a_rb_bypass_serializer => a_rb_bypass_serializer,
a_use_dynamic_fifo_mode => a_use_dynamic_fifo_mode,
a_rb_fifo_mode => a_rb_fifo_mode,
a_rb_data_width => a_rb_data_width,
a_enable_soft_cdr => a_enable_soft_cdr,
a_rb_tx_outclk => a_rb_tx_outclk,
a_rb_bslipcfg => a_rb_bslipcfg,
a_sim_wclk_pre_delay => a_sim_wclk_pre_delay,
a_sim_readenable_pre_delay => a_sim_readenable_pre_delay
)
port map (
bslipmax => bslipmax,
dynfifomode => dynfifomode,
observableout => observableout,
writeenable => writeenable,
readclk => readclk,
txin => txin,
regscanovrd => regscanovrd,
rxout => rxout,
bslipout => bslipout,
rstn => rstn,
loaden => loaden,
lvdsmodeen => lvdsmodeen,
bslipctl => bslipctl,
observablefout3 => observablefout3,
scanin => scanin,
readenable => readenable,
scanout => scanout,
writeclk => writeclk,
observablefout2 => observablefout2,
dinfiforx => dinfiforx,
tstclk => tstclk,
observablefout4 => observablefout4,
observablefout1 => observablefout1,
dout => dout,
bslipin => bslipin,
txout => txout,
regscan => regscan,
observablewaddrcnt => observablewaddrcnt,
lvdstxsel => lvdstxsel
);
end behavior;
library IEEE;
use IEEE.std_logic_1164.all;
entity cyclonev_oscillator is
generic (
lpm_type : string := "cyclonev_oscillator");
port (
oscena : in std_logic;
clkout : out std_logic;
clkout1 : out std_logic
);
end cyclonev_oscillator;
architecture behavior of cyclonev_oscillator is
component cyclonev_oscillator_encrypted
generic (
lpm_type : string := "cyclonev_oscillator");
port (
oscena : in std_logic;
clkout : out std_logic;
clkout1 : out std_logic
);
end component;
begin
inst : cyclonev_oscillator_encrypted
generic map (
lpm_type => lpm_type
)
port map (
oscena => oscena,
clkout => clkout,
clkout1 => clkout1
);
end behavior;