Optimize project dir structure, add dl814_k7 proj.

This commit is contained in:
2023-03-19 10:31:23 +08:00
parent 5965eba577
commit 454606fac2
3718 changed files with 7735502 additions and 134 deletions
@@ -0,0 +1 @@
The files in this directory structure are automatically generated and managed by Vivado. Editing these files is not recommended.
@@ -0,0 +1,71 @@
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of Xilinx, Inc. and is protected under U.S. and
// international copyright and other intellectual property
// laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// Xilinx, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) Xilinx shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or Xilinx had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// Xilinx products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of Xilinx products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
//
// DO NOT MODIFY THIS FILE.
// IP VLNV: xilinx.com:ip:cmpy:6.0
// IP Revision: 17
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
cmpy_18x8 your_instance_name (
.aclk(aclk), // input wire aclk
.s_axis_a_tvalid(s_axis_a_tvalid), // input wire s_axis_a_tvalid
.s_axis_a_tdata(s_axis_a_tdata), // input wire [47 : 0] s_axis_a_tdata
.s_axis_b_tvalid(s_axis_b_tvalid), // input wire s_axis_b_tvalid
.s_axis_b_tdata(s_axis_b_tdata), // input wire [15 : 0] s_axis_b_tdata
.m_axis_dout_tvalid(m_axis_dout_tvalid), // output wire m_axis_dout_tvalid
.m_axis_dout_tdata(m_axis_dout_tdata) // output wire [63 : 0] m_axis_dout_tdata
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file cmpy_18x8.v when simulating
// the core, cmpy_18x8. When compiling the wrapper file, be sure to
// reference the Verilog simulation library.
@@ -0,0 +1,87 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:cmpy:6.0
-- IP Revision: 17
-- The following code must appear in the VHDL architecture header.
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
COMPONENT cmpy_18x8
PORT (
aclk : IN STD_LOGIC;
s_axis_a_tvalid : IN STD_LOGIC;
s_axis_a_tdata : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
s_axis_b_tvalid : IN STD_LOGIC;
s_axis_b_tdata : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
m_axis_dout_tvalid : OUT STD_LOGIC;
m_axis_dout_tdata : OUT STD_LOGIC_VECTOR(63 DOWNTO 0)
);
END COMPONENT;
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
-- The following code must appear in the VHDL architecture
-- body. Substitute your own instance name and net names.
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
your_instance_name : cmpy_18x8
PORT MAP (
aclk => aclk,
s_axis_a_tvalid => s_axis_a_tvalid,
s_axis_a_tdata => s_axis_a_tdata,
s_axis_b_tvalid => s_axis_b_tvalid,
s_axis_b_tdata => s_axis_b_tdata,
m_axis_dout_tvalid => m_axis_dout_tvalid,
m_axis_dout_tdata => m_axis_dout_tdata
);
-- INST_TAG_END ------ End INSTANTIATION Template ---------
-- You must compile the wrapper file cmpy_18x8.vhd when simulating
-- the core, cmpy_18x8. When compiling the wrapper file, be sure to
-- reference the VHDL simulation library.
@@ -0,0 +1,27 @@
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
// Date : Sat Mar 18 23:15:41 2023
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
// Command : write_verilog -force -mode synth_stub
// D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/cmpy_18x8_synth_1/cmpy_18x8_stub.v
// Design : cmpy_18x8
// Purpose : Stub declaration of top-level module interface
// Device : xc7k410tffg900-2
// --------------------------------------------------------------------------------
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
(* x_core_info = "cmpy_v6_0_17,Vivado 2019.1.3" *)
module cmpy_18x8(aclk, s_axis_a_tvalid, s_axis_a_tdata,
s_axis_b_tvalid, s_axis_b_tdata, m_axis_dout_tvalid, m_axis_dout_tdata)
/* synthesis syn_black_box black_box_pad_pin="aclk,s_axis_a_tvalid,s_axis_a_tdata[47:0],s_axis_b_tvalid,s_axis_b_tdata[15:0],m_axis_dout_tvalid,m_axis_dout_tdata[63:0]" */;
input aclk;
input s_axis_a_tvalid;
input [47:0]s_axis_a_tdata;
input s_axis_b_tvalid;
input [15:0]s_axis_b_tdata;
output m_axis_dout_tvalid;
output [63:0]m_axis_dout_tdata;
endmodule
@@ -0,0 +1,36 @@
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-- --------------------------------------------------------------------------------
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
-- Date : Sat Mar 18 23:15:41 2023
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
-- Command : write_vhdl -force -mode synth_stub
-- D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/cmpy_18x8_synth_1/cmpy_18x8_stub.vhdl
-- Design : cmpy_18x8
-- Purpose : Stub declaration of top-level module interface
-- Device : xc7k410tffg900-2
-- --------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity cmpy_18x8 is
Port (
aclk : in STD_LOGIC;
s_axis_a_tvalid : in STD_LOGIC;
s_axis_a_tdata : in STD_LOGIC_VECTOR ( 47 downto 0 );
s_axis_b_tvalid : in STD_LOGIC;
s_axis_b_tdata : in STD_LOGIC_VECTOR ( 15 downto 0 );
m_axis_dout_tvalid : out STD_LOGIC;
m_axis_dout_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 )
);
end cmpy_18x8;
architecture stub of cmpy_18x8 is
attribute syn_black_box : boolean;
attribute black_box_pad_pin : string;
attribute syn_black_box of stub : architecture is true;
attribute black_box_pad_pin of stub : architecture is "aclk,s_axis_a_tvalid,s_axis_a_tdata[47:0],s_axis_b_tvalid,s_axis_b_tdata[15:0],m_axis_dout_tvalid,m_axis_dout_tdata[63:0]";
attribute x_core_info : string;
attribute x_core_info of stub : architecture is "cmpy_v6_0_17,Vivado 2019.1.3";
begin
end;
@@ -0,0 +1,387 @@
--------------------------------------------------------------------------------
-- (c) Copyright 2011 - 2013 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--------------------------------------------------------------------------------
-- Description:
-- This is an example testbench for the Complex Multiplier IP core.
-- The testbench has been generated by Vivado to accompany the IP core
-- instance you have generated.
--
-- This testbench is for demonstration purposes only. See note below for
-- instructions on how to use it with your core.
--
-- See the Complex Multiplier product guide for further information
-- about this core.
--
--------------------------------------------------------------------------------
-- Using this testbench
--
-- This testbench instantiates your generated Complex Multiplier core
-- instance named "cmpy_18x8".
--
-- Use Vivado's Run Simulation flow to run this testbench. See the Vivado
-- documentation for details.
--------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;
entity tb_cmpy_18x8 is
end tb_cmpy_18x8;
architecture tb of tb_cmpy_18x8 is
-----------------------------------------------------------------------
-- Timing constants
-----------------------------------------------------------------------
constant CLOCK_PERIOD : time := 100 ns;
constant T_HOLD : time := 10 ns;
constant T_STROBE : time := CLOCK_PERIOD - (1 ns);
constant TEST_CYCLES : integer := 3000;
constant PHASE_CYCLES : integer := 1000;
-----------------------------------------------------------------------
-- DUT input signals
-----------------------------------------------------------------------
-- General inputs
signal aclk : std_logic := '0'; -- the master clock
-- Slave channel A inputs
signal s_axis_a_tvalid : std_logic := '0'; -- TVALID for channel A
signal s_axis_a_tdata : std_logic_vector(47 downto 0) := (others => '0'); -- TDATA for channel A
-- Slave channel B inputs
signal s_axis_b_tvalid : std_logic := '0'; -- TVALID for channel B
signal s_axis_b_tdata : std_logic_vector(15 downto 0) := (others => '0'); -- TDATA for channel B
-----------------------------------------------------------------------
-- DUT output signals
-----------------------------------------------------------------------
-- Master channel DOUT outputs
signal m_axis_dout_tvalid : std_logic := '0'; -- TVALID for channel DOUT
signal m_axis_dout_tdata : std_logic_vector(63 downto 0) := (others => '0'); -- TDATA for channel DOUT
-----------------------------------------------------------------------
-- Aliases for AXI channel TDATA fields
-- These are a convenience for viewing data in a simulator waveform viewer.
-- If using ModelSim or Questa, add "-voptargs=+acc=n" to the vsim command
-- to prevent the simulator optimizing away these signals.
-----------------------------------------------------------------------
signal s_axis_a_tdata_real : std_logic_vector(17 downto 0) := (others => '0');
signal s_axis_a_tdata_imag : std_logic_vector(17 downto 0) := (others => '0');
signal s_axis_b_tdata_real : std_logic_vector(7 downto 0) := (others => '0');
signal s_axis_b_tdata_imag : std_logic_vector(7 downto 0) := (others => '0');
signal m_axis_dout_tdata_real : std_logic_vector(26 downto 0) := (others => '0');
signal m_axis_dout_tdata_imag : std_logic_vector(26 downto 0) := (others => '0');
-----------------------------------------------------------------------
-- Testbench signals
-----------------------------------------------------------------------
signal cycles : integer := 0; -- Clock cycle counter
-----------------------------------------------------------------------
-- Constants, types and functions to create input data
-- Treat the complex multiplier as a mixer that is combining two
-- sinusoids exp(+/-jwt) of different frequencies and amplitudes:
-- channel A: exp(+jwt), frequency = clock / 30, amplitude = fullscale >> 3
-- channel B: exp(-jwt), frequency = clock / 32, amplitude = fullscale
-- The output of the complex multiplier is a sinusoid with a frequency
-- equal to the difference between the input frequencies.
-----------------------------------------------------------------------
constant IP_A_DEPTH : integer := 30;
constant IP_A_WIDTH : integer := 18;
constant IP_A_SHIFT : integer := 3; -- bit shift for amplitude
constant IP_B_DEPTH : integer := 32;
constant IP_B_WIDTH : integer := 8;
constant IP_B_SHIFT : integer := 0; -- no bit shift, max amplitude
type T_IP_INT_ENTRY is record
re : integer;
im : integer;
end record;
type T_IP_A_ENTRY is record
re : std_logic_vector(IP_A_WIDTH-1 downto 0);
im : std_logic_vector(IP_A_WIDTH-1 downto 0);
end record;
type T_IP_B_ENTRY is record
re : std_logic_vector(IP_B_WIDTH-1 downto 0);
im : std_logic_vector(IP_B_WIDTH-1 downto 0);
end record;
type T_IP_A_TABLE is array (0 to IP_A_DEPTH-1) of T_IP_A_ENTRY;
type T_IP_B_TABLE is array (0 to IP_B_DEPTH-1) of T_IP_B_ENTRY;
-- Common function to calculate sine and cosine values
function create_ip_entry(index, depth, width : integer) return T_IP_INT_ENTRY is
variable result : T_IP_INT_ENTRY;
variable theta : real;
variable limited_width : integer := width - 2;
begin
if limited_width > 30 then
limited_width := 30;
end if;
theta := real(index) / real(depth) * 2.0 * MATH_PI;
result.re := integer(round(cos(theta) * real(2**limited_width-1)));
result.im := integer(round(sin(theta) * real(2**limited_width-1)));
return result;
end function create_ip_entry;
-- Use separate functions to calculate channel A and B sinusoids as they return different types
function create_ip_a_table return T_IP_A_TABLE is
variable result : T_IP_A_TABLE;
variable entry_int : T_IP_INT_ENTRY;
begin
for i in 0 to IP_A_DEPTH-1 loop
entry_int := create_ip_entry(i, IP_A_DEPTH, IP_A_WIDTH - IP_A_SHIFT);
result(i).re := std_logic_vector(to_signed(entry_int.re, IP_A_WIDTH));
result(i).im := std_logic_vector(to_signed(entry_int.im, IP_A_WIDTH));
end loop;
return result;
end function create_ip_a_table;
function create_ip_b_table return T_IP_B_TABLE is
variable result : T_IP_B_TABLE;
variable entry_int : T_IP_INT_ENTRY;
begin
for i in 0 to IP_B_DEPTH-1 loop
entry_int := create_ip_entry(IP_B_DEPTH-1-i, IP_B_DEPTH, IP_B_WIDTH - IP_B_SHIFT); -- note rotation direction
result(i).re := std_logic_vector(to_signed(entry_int.re, IP_B_WIDTH));
result(i).im := std_logic_vector(to_signed(entry_int.im, IP_B_WIDTH));
end loop;
return result;
end function create_ip_b_table;
-- Call the functions to create the data
constant IP_A_DATA : T_IP_A_TABLE := create_ip_a_table;
constant IP_B_DATA : T_IP_B_TABLE := create_ip_b_table;
begin
-----------------------------------------------------------------------
-- Instantiate the DUT
-----------------------------------------------------------------------
dut : entity work.cmpy_18x8
port map (
aclk => aclk,
s_axis_a_tvalid => s_axis_a_tvalid,
s_axis_a_tdata => s_axis_a_tdata,
s_axis_b_tvalid => s_axis_b_tvalid,
s_axis_b_tdata => s_axis_b_tdata,
m_axis_dout_tvalid => m_axis_dout_tvalid,
m_axis_dout_tdata => m_axis_dout_tdata
);
-----------------------------------------------------------------------
-- Generate clock
-----------------------------------------------------------------------
clock_gen : process
begin
aclk <= '0';
wait for CLOCK_PERIOD;
loop
cycles <= cycles + 1;
aclk <= '0';
wait for CLOCK_PERIOD/2;
aclk <= '1';
wait for CLOCK_PERIOD/2;
if cycles >= TEST_CYCLES then
report "Not a real failure. Simulation finished successfully. Test completed successfully" severity failure;
wait;
end if;
end loop;
end process clock_gen;
-----------------------------------------------------------------------
-- Generate inputs
-----------------------------------------------------------------------
stimuli : process
variable ip_a_index : integer := 0;
variable ip_b_index : integer := 0;
variable a_tvalid_nxt : std_logic := '0';
variable b_tvalid_nxt : std_logic := '0';
variable phase2_cycles : integer := 1;
variable phase2_count : integer := 0;
constant PHASE2_LIMIT : integer := 30;
begin
-- Test is stopped in clock_gen process, use endless loop here
loop
-- Drive inputs T_HOLD time after rising edge of clock
wait until rising_edge(aclk);
wait for T_HOLD;
-- Drive AXI TVALID signals to demonstrate different types of operation
case cycles is -- do different types of operation at different phases of the test
when 0 to PHASE_CYCLES * 1 - 1 =>
-- Phase 1: inputs always valid, no missing input data
a_tvalid_nxt := '1';
b_tvalid_nxt := '1';
when PHASE_CYCLES * 1 to PHASE_CYCLES * 2 - 1 =>
-- Phase 2: deprive channel A of valid transactions at an increasing rate
b_tvalid_nxt := '1';
if phase2_count < phase2_cycles then
a_tvalid_nxt := '0';
else
a_tvalid_nxt := '1';
end if;
phase2_count := phase2_count + 1;
if phase2_count >= PHASE2_LIMIT then
phase2_count := 0;
phase2_cycles := phase2_cycles + 1;
end if;
when PHASE_CYCLES * 2 to PHASE_CYCLES * 3 - 1 =>
-- Phase 3: deprive channel A of 1 out of 2 transactions, and channel B of 1 out of 3 transactions
if cycles mod 2 = 0 then
a_tvalid_nxt := '0';
else
a_tvalid_nxt := '1';
end if;
if cycles mod 3 = 0 then
b_tvalid_nxt := '0';
else
b_tvalid_nxt := '1';
end if;
when others =>
-- Test will stop imminently - do nothing
null;
end case;
-- Drive handshake signals with local variable values
s_axis_a_tvalid <= a_tvalid_nxt;
s_axis_b_tvalid <= b_tvalid_nxt;
-- Drive AXI slave channel A payload
-- Drive '0's on payload signals when not valid
if a_tvalid_nxt /= '1' then
s_axis_a_tdata <= (others => '0');
else
-- TDATA: Real and imaginary components are each 18 bits wide and byte-aligned at their LSBs
s_axis_a_tdata(17 downto 0) <= IP_A_DATA(ip_a_index).re;
s_axis_a_tdata(23 downto 18) <= (others => IP_A_DATA(ip_a_index).re(17)); -- sign-extend;
s_axis_a_tdata(41 downto 24) <= IP_A_DATA(ip_a_index).im;
s_axis_a_tdata(47 downto 42) <= (others => IP_A_DATA(ip_a_index).im(17)); -- sign-extend;
end if;
-- Drive AXI slave channel B payload
-- Drive '0's on payload signals when not valid
if b_tvalid_nxt /= '1' then
s_axis_b_tdata <= (others => '0');
else
-- TDATA: Real and imaginary components are each 8 bits wide and byte-aligned at their LSBs
s_axis_b_tdata(7 downto 0) <= IP_B_DATA(ip_b_index).re;
s_axis_b_tdata(15 downto 8) <= IP_B_DATA(ip_b_index).im;
end if;
-- Increment input data indices
if a_tvalid_nxt = '1' then
ip_a_index := ip_a_index + 1;
if ip_a_index = IP_A_DEPTH then
ip_a_index := 0;
end if;
end if;
if b_tvalid_nxt = '1' then
ip_b_index := ip_b_index + 1;
if ip_b_index = IP_B_DEPTH then
ip_b_index := 0;
end if;
end if;
end loop;
end process stimuli;
-----------------------------------------------------------------------
-- Check outputs
-----------------------------------------------------------------------
check_outputs : process
variable check_ok : boolean := true;
begin
-- Check outputs T_STROBE time after rising edge of clock
wait until rising_edge(aclk);
wait for T_STROBE;
-- Do not check the output payload values, as this requires the behavioral model
-- which would make this demonstration testbench unwieldy.
-- Instead, check the protocol of the DOUT channel:
-- check that the payload is valid (not X) when TVALID is high
if m_axis_dout_tvalid = '1' then
if is_x(m_axis_dout_tdata) then
report "ERROR: m_axis_dout_tdata is invalid when m_axis_dout_tvalid is high" severity error;
check_ok := false;
end if;
end if;
assert check_ok
report "ERROR: terminating test with failures." severity failure;
end process check_outputs;
-----------------------------------------------------------------------
-- Assign TDATA fields to aliases, for easy simulator waveform viewing
-----------------------------------------------------------------------
s_axis_a_tdata_real <= s_axis_a_tdata(17 downto 0);
s_axis_a_tdata_imag <= s_axis_a_tdata(41 downto 24);
s_axis_b_tdata_real <= s_axis_b_tdata(7 downto 0);
s_axis_b_tdata_imag <= s_axis_b_tdata(15 downto 8);
m_axis_dout_tdata_real <= m_axis_dout_tdata(26 downto 0);
m_axis_dout_tdata_imag <= m_axis_dout_tdata(58 downto 32);
end tb;
@@ -0,0 +1,202 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:cmpy:6.0
-- IP Revision: 17
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY cmpy_v6_0_17;
USE cmpy_v6_0_17.cmpy_v6_0_17;
ENTITY cmpy_18x8 IS
PORT (
aclk : IN STD_LOGIC;
s_axis_a_tvalid : IN STD_LOGIC;
s_axis_a_tdata : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
s_axis_b_tvalid : IN STD_LOGIC;
s_axis_b_tdata : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
m_axis_dout_tvalid : OUT STD_LOGIC;
m_axis_dout_tdata : OUT STD_LOGIC_VECTOR(63 DOWNTO 0)
);
END cmpy_18x8;
ARCHITECTURE cmpy_18x8_arch OF cmpy_18x8 IS
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
ATTRIBUTE DowngradeIPIdentifiedWarnings OF cmpy_18x8_arch: ARCHITECTURE IS "yes";
COMPONENT cmpy_v6_0_17 IS
GENERIC (
C_VERBOSITY : INTEGER;
C_XDEVICEFAMILY : STRING;
C_XDEVICE : STRING;
C_A_WIDTH : INTEGER;
C_B_WIDTH : INTEGER;
C_OUT_WIDTH : INTEGER;
C_LATENCY : INTEGER;
C_MULT_TYPE : INTEGER;
C_OPTIMIZE_GOAL : INTEGER;
HAS_NEGATE : INTEGER;
SINGLE_OUTPUT : INTEGER;
ROUND : INTEGER;
USE_DSP_CASCADES : INTEGER;
C_THROTTLE_SCHEME : INTEGER;
C_HAS_ACLKEN : INTEGER;
C_HAS_ARESETN : INTEGER;
C_HAS_S_AXIS_A_TUSER : INTEGER;
C_HAS_S_AXIS_A_TLAST : INTEGER;
C_HAS_S_AXIS_B_TUSER : INTEGER;
C_HAS_S_AXIS_B_TLAST : INTEGER;
C_HAS_S_AXIS_CTRL_TUSER : INTEGER;
C_HAS_S_AXIS_CTRL_TLAST : INTEGER;
C_TLAST_RESOLUTION : INTEGER;
C_S_AXIS_A_TDATA_WIDTH : INTEGER;
C_S_AXIS_A_TUSER_WIDTH : INTEGER;
C_S_AXIS_B_TDATA_WIDTH : INTEGER;
C_S_AXIS_B_TUSER_WIDTH : INTEGER;
C_S_AXIS_CTRL_TDATA_WIDTH : INTEGER;
C_S_AXIS_CTRL_TUSER_WIDTH : INTEGER;
C_M_AXIS_DOUT_TDATA_WIDTH : INTEGER;
C_M_AXIS_DOUT_TUSER_WIDTH : INTEGER
);
PORT (
aclk : IN STD_LOGIC;
aclken : IN STD_LOGIC;
aresetn : IN STD_LOGIC;
s_axis_a_tvalid : IN STD_LOGIC;
s_axis_a_tready : OUT STD_LOGIC;
s_axis_a_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_a_tlast : IN STD_LOGIC;
s_axis_a_tdata : IN STD_LOGIC_VECTOR(47 DOWNTO 0);
s_axis_b_tvalid : IN STD_LOGIC;
s_axis_b_tready : OUT STD_LOGIC;
s_axis_b_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_b_tlast : IN STD_LOGIC;
s_axis_b_tdata : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
s_axis_ctrl_tvalid : IN STD_LOGIC;
s_axis_ctrl_tready : OUT STD_LOGIC;
s_axis_ctrl_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_ctrl_tlast : IN STD_LOGIC;
s_axis_ctrl_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
m_axis_dout_tvalid : OUT STD_LOGIC;
m_axis_dout_tready : IN STD_LOGIC;
m_axis_dout_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
m_axis_dout_tlast : OUT STD_LOGIC;
m_axis_dout_tdata : OUT STD_LOGIC_VECTOR(63 DOWNTO 0)
);
END COMPONENT cmpy_v6_0_17;
ATTRIBUTE X_INTERFACE_INFO : STRING;
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
ATTRIBUTE X_INTERFACE_INFO OF m_axis_dout_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DOUT TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF m_axis_dout_tvalid: SIGNAL IS "XIL_INTERFACENAME M_AXIS_DOUT, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF m_axis_dout_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DOUT TVALID";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_b_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_B TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_b_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_B, TDATA_NUM_BYTES 2, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_b_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_B TVALID";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_a_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_A TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_a_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_A, TDATA_NUM_BYTES 6, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_a_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_A TVALID";
ATTRIBUTE X_INTERFACE_PARAMETER OF aclk: SIGNAL IS "XIL_INTERFACENAME aclk_intf, ASSOCIATED_BUSIF S_AXIS_CTRL:S_AXIS_B:S_AXIS_A:M_AXIS_DOUT, ASSOCIATED_RESET aresetn, ASSOCIATED_CLKEN aclken, FREQ_HZ 10000000, PHASE 0.000, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF aclk: SIGNAL IS "xilinx.com:signal:clock:1.0 aclk_intf CLK";
BEGIN
U0 : cmpy_v6_0_17
GENERIC MAP (
C_VERBOSITY => 0,
C_XDEVICEFAMILY => "kintex7",
C_XDEVICE => "xc7k410t",
C_A_WIDTH => 18,
C_B_WIDTH => 8,
C_OUT_WIDTH => 27,
C_LATENCY => 6,
C_MULT_TYPE => 1,
C_OPTIMIZE_GOAL => 0,
HAS_NEGATE => 0,
SINGLE_OUTPUT => 0,
ROUND => 0,
USE_DSP_CASCADES => 1,
C_THROTTLE_SCHEME => 3,
C_HAS_ACLKEN => 0,
C_HAS_ARESETN => 0,
C_HAS_S_AXIS_A_TUSER => 0,
C_HAS_S_AXIS_A_TLAST => 0,
C_HAS_S_AXIS_B_TUSER => 0,
C_HAS_S_AXIS_B_TLAST => 0,
C_HAS_S_AXIS_CTRL_TUSER => 0,
C_HAS_S_AXIS_CTRL_TLAST => 0,
C_TLAST_RESOLUTION => 0,
C_S_AXIS_A_TDATA_WIDTH => 48,
C_S_AXIS_A_TUSER_WIDTH => 1,
C_S_AXIS_B_TDATA_WIDTH => 16,
C_S_AXIS_B_TUSER_WIDTH => 1,
C_S_AXIS_CTRL_TDATA_WIDTH => 8,
C_S_AXIS_CTRL_TUSER_WIDTH => 1,
C_M_AXIS_DOUT_TDATA_WIDTH => 64,
C_M_AXIS_DOUT_TUSER_WIDTH => 1
)
PORT MAP (
aclk => aclk,
aclken => '1',
aresetn => '1',
s_axis_a_tvalid => s_axis_a_tvalid,
s_axis_a_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_a_tlast => '0',
s_axis_a_tdata => s_axis_a_tdata,
s_axis_b_tvalid => s_axis_b_tvalid,
s_axis_b_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_b_tlast => '0',
s_axis_b_tdata => s_axis_b_tdata,
s_axis_ctrl_tvalid => '0',
s_axis_ctrl_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_ctrl_tlast => '0',
s_axis_ctrl_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 8)),
m_axis_dout_tvalid => m_axis_dout_tvalid,
m_axis_dout_tready => '0',
m_axis_dout_tdata => m_axis_dout_tdata
);
END cmpy_18x8_arch;
@@ -0,0 +1,69 @@
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of Xilinx, Inc. and is protected under U.S. and
// international copyright and other intellectual property
// laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// Xilinx, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) Xilinx shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or Xilinx had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// Xilinx products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of Xilinx products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
//
// DO NOT MODIFY THIS FILE.
// IP VLNV: xilinx.com:ip:dds_compiler:6.0
// IP Revision: 18
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
dds_32b_8b your_instance_name (
.aclk(aclk), // input wire aclk
.s_axis_config_tvalid(s_axis_config_tvalid), // input wire s_axis_config_tvalid
.s_axis_config_tdata(s_axis_config_tdata), // input wire [31 : 0] s_axis_config_tdata
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata(m_axis_data_tdata) // output wire [15 : 0] m_axis_data_tdata
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file dds_32b_8b.v when simulating
// the core, dds_32b_8b. When compiling the wrapper file, be sure to
// reference the Verilog simulation library.
@@ -0,0 +1,83 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:dds_compiler:6.0
-- IP Revision: 18
-- The following code must appear in the VHDL architecture header.
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
COMPONENT dds_32b_8b
PORT (
aclk : IN STD_LOGIC;
s_axis_config_tvalid : IN STD_LOGIC;
s_axis_config_tdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
);
END COMPONENT;
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
-- The following code must appear in the VHDL architecture
-- body. Substitute your own instance name and net names.
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
your_instance_name : dds_32b_8b
PORT MAP (
aclk => aclk,
s_axis_config_tvalid => s_axis_config_tvalid,
s_axis_config_tdata => s_axis_config_tdata,
m_axis_data_tvalid => m_axis_data_tvalid,
m_axis_data_tdata => m_axis_data_tdata
);
-- INST_TAG_END ------ End INSTANTIATION Template ---------
-- You must compile the wrapper file dds_32b_8b.vhd when simulating
-- the core, dds_32b_8b. When compiling the wrapper file, be sure to
-- reference the VHDL simulation library.
@@ -0,0 +1,25 @@
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
// Date : Sat Mar 18 23:15:37 2023
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
// Command : write_verilog -force -mode synth_stub
// D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/dds_32b_8b_synth_1/dds_32b_8b_stub.v
// Design : dds_32b_8b
// Purpose : Stub declaration of top-level module interface
// Device : xc7k410tffg900-2
// --------------------------------------------------------------------------------
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
(* x_core_info = "dds_compiler_v6_0_18,Vivado 2019.1.3" *)
module dds_32b_8b(aclk, s_axis_config_tvalid,
s_axis_config_tdata, m_axis_data_tvalid, m_axis_data_tdata)
/* synthesis syn_black_box black_box_pad_pin="aclk,s_axis_config_tvalid,s_axis_config_tdata[31:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]" */;
input aclk;
input s_axis_config_tvalid;
input [31:0]s_axis_config_tdata;
output m_axis_data_tvalid;
output [15:0]m_axis_data_tdata;
endmodule
@@ -0,0 +1,34 @@
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-- --------------------------------------------------------------------------------
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
-- Date : Sat Mar 18 23:15:37 2023
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
-- Command : write_vhdl -force -mode synth_stub
-- D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/dds_32b_8b_synth_1/dds_32b_8b_stub.vhdl
-- Design : dds_32b_8b
-- Purpose : Stub declaration of top-level module interface
-- Device : xc7k410tffg900-2
-- --------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity dds_32b_8b is
Port (
aclk : in STD_LOGIC;
s_axis_config_tvalid : in STD_LOGIC;
s_axis_config_tdata : in STD_LOGIC_VECTOR ( 31 downto 0 );
m_axis_data_tvalid : out STD_LOGIC;
m_axis_data_tdata : out STD_LOGIC_VECTOR ( 15 downto 0 )
);
end dds_32b_8b;
architecture stub of dds_32b_8b is
attribute syn_black_box : boolean;
attribute black_box_pad_pin : string;
attribute syn_black_box of stub : architecture is true;
attribute black_box_pad_pin of stub : architecture is "aclk,s_axis_config_tvalid,s_axis_config_tdata[31:0],m_axis_data_tvalid,m_axis_data_tdata[15:0]";
attribute x_core_info : string;
attribute x_core_info of stub : architecture is "dds_compiler_v6_0_18,Vivado 2019.1.3";
begin
end;
@@ -0,0 +1,235 @@
--------------------------------------------------------------------------------
-- (c) Copyright 2010 - 2013 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--------------------------------------------------------------------------------
-- Description:
-- This is an example testbench for the DDS Compiler IP core.
-- The testbench has been generated by Vivado to accompany the IP core
-- instance you have generated.
--
-- This testbench is for demonstration purposes only. See note below for
-- instructions on how to use it with your core.
--
-- See the DDS Compiler product guide for further information
-- about this core.
--
--------------------------------------------------------------------------------
-- Using this testbench
--
-- This testbench instantiates your generated DDS Compiler core
-- instance named "dds_32b_8b".
--
-- Use Vivado's Run Simulation flow to run this testbench. See the Vivado
-- documentation for details.
--------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;
entity tb_dds_32b_8b is
end tb_dds_32b_8b;
architecture tb of tb_dds_32b_8b is
-----------------------------------------------------------------------
-- Timing constants
-----------------------------------------------------------------------
constant CLOCK_PERIOD : time := 100 ns;
constant T_HOLD : time := 10 ns;
constant T_STROBE : time := CLOCK_PERIOD - (1 ns);
-----------------------------------------------------------------------
-- DUT input signals
-----------------------------------------------------------------------
-- General inputs
signal aclk : std_logic := '0'; -- the master clock
-- Config slave channel signals
signal s_axis_config_tvalid : std_logic := '0'; -- payload is valid
signal s_axis_config_tdata : std_logic_vector(31 downto 0) := (others => '0'); -- data payload
-- Data master channel signals
signal m_axis_data_tvalid : std_logic := '0'; -- payload is valid
signal m_axis_data_tdata : std_logic_vector(15 downto 0) := (others => '0'); -- data payload
-----------------------------------------------------------------------
-- Aliases for AXI channel TDATA and TUSER fields
-- These are a convenience for viewing data in a simulator waveform viewer.
-- If using ModelSim or Questa, add "-voptargs=+acc=n" to the vsim command
-- to prevent the simulator optimizing away these signals.
-----------------------------------------------------------------------
-- Config slave channel alias signals
signal s_axis_config_tdata_inc : std_logic_vector(31 downto 0) := (others => '0');
-- Data master channel alias signals
signal m_axis_data_tdata_cosine : std_logic_vector(7 downto 0) := (others => '0');
signal m_axis_data_tdata_sine : std_logic_vector(7 downto 0) := (others => '0');
signal end_of_simulation : boolean := false;
begin
-----------------------------------------------------------------------
-- Instantiate the DUT
-----------------------------------------------------------------------
dut : entity work.dds_32b_8b
port map (
aclk => aclk
,s_axis_config_tvalid => s_axis_config_tvalid
,s_axis_config_tdata => s_axis_config_tdata
,m_axis_data_tvalid => m_axis_data_tvalid
,m_axis_data_tdata => m_axis_data_tdata
);
-----------------------------------------------------------------------
-- Generate clock
-----------------------------------------------------------------------
clock_gen : process
begin
aclk <= '0';
if (end_of_simulation) then
wait;
else
wait for CLOCK_PERIOD;
loop
aclk <= '0';
wait for CLOCK_PERIOD/2;
aclk <= '1';
wait for CLOCK_PERIOD/2;
end loop;
end if;
end process clock_gen;
-----------------------------------------------------------------------
-- Generate inputs
-----------------------------------------------------------------------
stimuli : process
begin
-- Drive inputs T_HOLD time after rising edge of clock
wait until rising_edge(aclk);
wait for T_HOLD;
-- Program the core with the initial configuration.
-- The phase increment value here is derived from the output frequency value set in the CORE Generator GUI.
s_axis_config_tvalid <= '1';
s_axis_config_tdata <= (others => '0'); -- set unused TDATA bits to zero
s_axis_config_tdata(31 downto 0) <= "00000000000000000000000000000000"; -- phase increment
wait for CLOCK_PERIOD;
s_axis_config_tvalid <= '0';
-- Run for long enough to produce 5 periods of outputs
wait for CLOCK_PERIOD * 5;
-- Configure the core with a different configuration:
-- set phase increment to half of its current value
s_axis_config_tvalid <= '1';
s_axis_config_tdata <= (others => '0'); -- set unused TDATA bits to zero
s_axis_config_tdata(31 downto 0) <= "00000000000000000000000000000000"; -- current phase increment / 2
wait for CLOCK_PERIOD;
s_axis_config_tvalid <= '0';
-- Run for long enough to produce 5 periods of outputs
wait for CLOCK_PERIOD * 10;
-- End of test
end_of_simulation <= true;
report "Not a real failure. Simulation finished successfully. Test completed successfully" severity failure;
wait;
end process stimuli;
-----------------------------------------------------------------------
-- Check outputs
-----------------------------------------------------------------------
check_outputs : process
variable check_ok : boolean := true;
begin
-- Check outputs T_STROBE time after rising edge of clock
wait until rising_edge(aclk);
wait for T_STROBE;
-- Do not check the output payload values, as this requires the behavioral model
-- which would make this demonstration testbench unwieldy.
-- Instead, check the protocol of the data master channel:
-- check that the payload is valid (not X) when TVALID is high
if m_axis_data_tvalid = '1' then
if is_x(m_axis_data_tdata) then
report "ERROR: m_axis_data_tdata is invalid when m_axis_data_tvalid is high" severity error;
check_ok := false;
end if;
end if;
assert check_ok
report "ERROR: terminating test with failures." severity failure;
end process check_outputs;
-----------------------------------------------------------------------
-- Assign TDATA fields to aliases, for easy simulator waveform viewing
-----------------------------------------------------------------------
-- Config slave channel alias signals
s_axis_config_tdata_inc <= s_axis_config_tdata(31 downto 0);
-- Data master channel alias signals: update these only when they are valid
m_axis_data_tdata_cosine <= m_axis_data_tdata(7 downto 0) when m_axis_data_tvalid = '1';
m_axis_data_tdata_sine <= m_axis_data_tdata(15 downto 8) when m_axis_data_tvalid = '1';
end tb;
@@ -0,0 +1,232 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:dds_compiler:6.0
-- IP Revision: 18
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY dds_compiler_v6_0_18;
USE dds_compiler_v6_0_18.dds_compiler_v6_0_18;
ENTITY dds_32b_8b IS
PORT (
aclk : IN STD_LOGIC;
s_axis_config_tvalid : IN STD_LOGIC;
s_axis_config_tdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
);
END dds_32b_8b;
ARCHITECTURE dds_32b_8b_arch OF dds_32b_8b IS
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
ATTRIBUTE DowngradeIPIdentifiedWarnings OF dds_32b_8b_arch: ARCHITECTURE IS "yes";
COMPONENT dds_compiler_v6_0_18 IS
GENERIC (
C_XDEVICEFAMILY : STRING;
C_MODE_OF_OPERATION : INTEGER;
C_MODULUS : INTEGER;
C_ACCUMULATOR_WIDTH : INTEGER;
C_CHANNELS : INTEGER;
C_HAS_PHASE_OUT : INTEGER;
C_HAS_PHASEGEN : INTEGER;
C_HAS_SINCOS : INTEGER;
C_LATENCY : INTEGER;
C_MEM_TYPE : INTEGER;
C_NEGATIVE_COSINE : INTEGER;
C_NEGATIVE_SINE : INTEGER;
C_NOISE_SHAPING : INTEGER;
C_OUTPUTS_REQUIRED : INTEGER;
C_OUTPUT_FORM : INTEGER;
C_OUTPUT_WIDTH : INTEGER;
C_PHASE_ANGLE_WIDTH : INTEGER;
C_PHASE_INCREMENT : INTEGER;
C_PHASE_INCREMENT_VALUE : STRING;
C_RESYNC : INTEGER;
C_PHASE_OFFSET : INTEGER;
C_PHASE_OFFSET_VALUE : STRING;
C_OPTIMISE_GOAL : INTEGER;
C_USE_DSP48 : INTEGER;
C_POR_MODE : INTEGER;
C_AMPLITUDE : INTEGER;
C_HAS_ACLKEN : INTEGER;
C_HAS_ARESETN : INTEGER;
C_HAS_TLAST : INTEGER;
C_HAS_TREADY : INTEGER;
C_HAS_S_PHASE : INTEGER;
C_S_PHASE_TDATA_WIDTH : INTEGER;
C_S_PHASE_HAS_TUSER : INTEGER;
C_S_PHASE_TUSER_WIDTH : INTEGER;
C_HAS_S_CONFIG : INTEGER;
C_S_CONFIG_SYNC_MODE : INTEGER;
C_S_CONFIG_TDATA_WIDTH : INTEGER;
C_HAS_M_DATA : INTEGER;
C_M_DATA_TDATA_WIDTH : INTEGER;
C_M_DATA_HAS_TUSER : INTEGER;
C_M_DATA_TUSER_WIDTH : INTEGER;
C_HAS_M_PHASE : INTEGER;
C_M_PHASE_TDATA_WIDTH : INTEGER;
C_M_PHASE_HAS_TUSER : INTEGER;
C_M_PHASE_TUSER_WIDTH : INTEGER;
C_DEBUG_INTERFACE : INTEGER;
C_CHAN_WIDTH : INTEGER
);
PORT (
aclk : IN STD_LOGIC;
aclken : IN STD_LOGIC;
aresetn : IN STD_LOGIC;
s_axis_phase_tvalid : IN STD_LOGIC;
s_axis_phase_tready : OUT STD_LOGIC;
s_axis_phase_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_phase_tlast : IN STD_LOGIC;
s_axis_phase_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_config_tvalid : IN STD_LOGIC;
s_axis_config_tready : OUT STD_LOGIC;
s_axis_config_tdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
s_axis_config_tlast : IN STD_LOGIC;
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tready : IN STD_LOGIC;
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
m_axis_data_tlast : OUT STD_LOGIC;
m_axis_data_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
m_axis_phase_tvalid : OUT STD_LOGIC;
m_axis_phase_tready : IN STD_LOGIC;
m_axis_phase_tdata : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
m_axis_phase_tlast : OUT STD_LOGIC;
m_axis_phase_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
event_pinc_invalid : OUT STD_LOGIC;
event_poff_invalid : OUT STD_LOGIC;
event_phase_in_invalid : OUT STD_LOGIC;
event_s_phase_tlast_missing : OUT STD_LOGIC;
event_s_phase_tlast_unexpected : OUT STD_LOGIC;
event_s_phase_chanid_incorrect : OUT STD_LOGIC;
event_s_config_tlast_missing : OUT STD_LOGIC;
event_s_config_tlast_unexpected : OUT STD_LOGIC
);
END COMPONENT dds_compiler_v6_0_18;
ATTRIBUTE X_INTERFACE_INFO : STRING;
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF m_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME M_AXIS_DATA, TDATA_NUM_BYTES 2, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TVALID";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_config_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_CONFIG TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_config_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_CONFIG, TDATA_NUM_BYTES 4, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_config_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_CONFIG TVALID";
ATTRIBUTE X_INTERFACE_PARAMETER OF aclk: SIGNAL IS "XIL_INTERFACENAME aclk_intf, ASSOCIATED_BUSIF M_AXIS_PHASE:S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_PHASE, ASSOCIATED_RESET aresetn, ASSOCIATED_CLKEN aclken, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF aclk: SIGNAL IS "xilinx.com:signal:clock:1.0 aclk_intf CLK";
BEGIN
U0 : dds_compiler_v6_0_18
GENERIC MAP (
C_XDEVICEFAMILY => "kintex7",
C_MODE_OF_OPERATION => 0,
C_MODULUS => 9,
C_ACCUMULATOR_WIDTH => 32,
C_CHANNELS => 1,
C_HAS_PHASE_OUT => 0,
C_HAS_PHASEGEN => 1,
C_HAS_SINCOS => 1,
C_LATENCY => 3,
C_MEM_TYPE => 1,
C_NEGATIVE_COSINE => 0,
C_NEGATIVE_SINE => 0,
C_NOISE_SHAPING => 0,
C_OUTPUTS_REQUIRED => 2,
C_OUTPUT_FORM => 0,
C_OUTPUT_WIDTH => 8,
C_PHASE_ANGLE_WIDTH => 8,
C_PHASE_INCREMENT => 1,
C_PHASE_INCREMENT_VALUE => "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
C_RESYNC => 0,
C_PHASE_OFFSET => 0,
C_PHASE_OFFSET_VALUE => "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
C_OPTIMISE_GOAL => 0,
C_USE_DSP48 => 0,
C_POR_MODE => 0,
C_AMPLITUDE => 0,
C_HAS_ACLKEN => 0,
C_HAS_ARESETN => 0,
C_HAS_TLAST => 0,
C_HAS_TREADY => 0,
C_HAS_S_PHASE => 0,
C_S_PHASE_TDATA_WIDTH => 1,
C_S_PHASE_HAS_TUSER => 0,
C_S_PHASE_TUSER_WIDTH => 1,
C_HAS_S_CONFIG => 1,
C_S_CONFIG_SYNC_MODE => 0,
C_S_CONFIG_TDATA_WIDTH => 32,
C_HAS_M_DATA => 1,
C_M_DATA_TDATA_WIDTH => 16,
C_M_DATA_HAS_TUSER => 0,
C_M_DATA_TUSER_WIDTH => 1,
C_HAS_M_PHASE => 0,
C_M_PHASE_TDATA_WIDTH => 1,
C_M_PHASE_HAS_TUSER => 0,
C_M_PHASE_TUSER_WIDTH => 1,
C_DEBUG_INTERFACE => 0,
C_CHAN_WIDTH => 1
)
PORT MAP (
aclk => aclk,
aclken => '1',
aresetn => '1',
s_axis_phase_tvalid => '0',
s_axis_phase_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_phase_tlast => '0',
s_axis_phase_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_config_tvalid => s_axis_config_tvalid,
s_axis_config_tdata => s_axis_config_tdata,
s_axis_config_tlast => '0',
m_axis_data_tvalid => m_axis_data_tvalid,
m_axis_data_tready => '0',
m_axis_data_tdata => m_axis_data_tdata,
m_axis_phase_tready => '0'
);
END dds_32b_8b_arch;
@@ -0,0 +1,67 @@
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of Xilinx, Inc. and is protected under U.S. and
// international copyright and other intellectual property
// laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// Xilinx, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) Xilinx shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or Xilinx had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// Xilinx products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of Xilinx products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
//
// DO NOT MODIFY THIS FILE.
// IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
// IP Revision: 3
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
hop_rom your_instance_name (
.clka(clka), // input wire clka
.addra(addra), // input wire [7 : 0] addra
.douta(douta) // output wire [31 : 0] douta
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file hop_rom.v when simulating
// the core, hop_rom. When compiling the wrapper file, be sure to
// reference the Verilog simulation library.
@@ -0,0 +1,79 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
-- IP Revision: 3
-- The following code must appear in the VHDL architecture header.
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
COMPONENT hop_rom
PORT (
clka : IN STD_LOGIC;
addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
douta : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
END COMPONENT;
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
-- The following code must appear in the VHDL architecture
-- body. Substitute your own instance name and net names.
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
your_instance_name : hop_rom
PORT MAP (
clka => clka,
addra => addra,
douta => douta
);
-- INST_TAG_END ------ End INSTANTIATION Template ---------
-- You must compile the wrapper file hop_rom.vhd when simulating
-- the core, hop_rom. When compiling the wrapper file, be sure to
-- reference the VHDL simulation library.
@@ -0,0 +1,749 @@
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
// Date : Sat Mar 18 23:15:57 2023
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
// Command : write_verilog -force -mode funcsim
// D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hop_rom_synth_1/hop_rom_sim_netlist.v
// Design : hop_rom
// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified
// or synthesized. This netlist cannot be used for SDF annotated simulation.
// Device : xc7k410tffg900-2
// --------------------------------------------------------------------------------
`timescale 1 ps / 1 ps
(* CHECK_LICENSE_TYPE = "hop_rom,blk_mem_gen_v8_4_3,{}" *) (* downgradeipidentifiedwarnings = "yes" *) (* x_core_info = "blk_mem_gen_v8_4_3,Vivado 2019.1.3" *)
(* NotValidForBitStream *)
module hop_rom
(clka,
addra,
douta);
(* x_interface_info = "xilinx.com:interface:bram:1.0 BRAM_PORTA CLK" *) (* x_interface_parameter = "XIL_INTERFACENAME BRAM_PORTA, MEM_SIZE 8192, MEM_WIDTH 32, MEM_ECC NONE, MASTER_TYPE OTHER, READ_LATENCY 1" *) input clka;
(* x_interface_info = "xilinx.com:interface:bram:1.0 BRAM_PORTA ADDR" *) input [7:0]addra;
(* x_interface_info = "xilinx.com:interface:bram:1.0 BRAM_PORTA DOUT" *) output [31:0]douta;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
wire NLW_U0_dbiterr_UNCONNECTED;
wire NLW_U0_rsta_busy_UNCONNECTED;
wire NLW_U0_rstb_busy_UNCONNECTED;
wire NLW_U0_s_axi_arready_UNCONNECTED;
wire NLW_U0_s_axi_awready_UNCONNECTED;
wire NLW_U0_s_axi_bvalid_UNCONNECTED;
wire NLW_U0_s_axi_dbiterr_UNCONNECTED;
wire NLW_U0_s_axi_rlast_UNCONNECTED;
wire NLW_U0_s_axi_rvalid_UNCONNECTED;
wire NLW_U0_s_axi_sbiterr_UNCONNECTED;
wire NLW_U0_s_axi_wready_UNCONNECTED;
wire NLW_U0_sbiterr_UNCONNECTED;
wire [31:0]NLW_U0_doutb_UNCONNECTED;
wire [7:0]NLW_U0_rdaddrecc_UNCONNECTED;
wire [3:0]NLW_U0_s_axi_bid_UNCONNECTED;
wire [1:0]NLW_U0_s_axi_bresp_UNCONNECTED;
wire [7:0]NLW_U0_s_axi_rdaddrecc_UNCONNECTED;
wire [31:0]NLW_U0_s_axi_rdata_UNCONNECTED;
wire [3:0]NLW_U0_s_axi_rid_UNCONNECTED;
wire [1:0]NLW_U0_s_axi_rresp_UNCONNECTED;
(* C_ADDRA_WIDTH = "8" *)
(* C_ADDRB_WIDTH = "8" *)
(* C_ALGORITHM = "1" *)
(* C_AXI_ID_WIDTH = "4" *)
(* C_AXI_SLAVE_TYPE = "0" *)
(* C_AXI_TYPE = "1" *)
(* C_BYTE_SIZE = "9" *)
(* C_COMMON_CLK = "0" *)
(* C_COUNT_18K_BRAM = "1" *)
(* C_COUNT_36K_BRAM = "0" *)
(* C_CTRL_ECC_ALGO = "NONE" *)
(* C_DEFAULT_DATA = "0" *)
(* C_DISABLE_WARN_BHV_COLL = "0" *)
(* C_DISABLE_WARN_BHV_RANGE = "0" *)
(* C_ELABORATION_DIR = "./" *)
(* C_ENABLE_32BIT_ADDRESS = "0" *)
(* C_EN_DEEPSLEEP_PIN = "0" *)
(* C_EN_ECC_PIPE = "0" *)
(* C_EN_RDADDRA_CHG = "0" *)
(* C_EN_RDADDRB_CHG = "0" *)
(* C_EN_SAFETY_CKT = "0" *)
(* C_EN_SHUTDOWN_PIN = "0" *)
(* C_EN_SLEEP_PIN = "0" *)
(* C_EST_POWER_SUMMARY = "Estimated Power for IP : 3.375199 mW" *)
(* C_FAMILY = "kintex7" *)
(* C_HAS_AXI_ID = "0" *)
(* C_HAS_ENA = "0" *)
(* C_HAS_ENB = "0" *)
(* C_HAS_INJECTERR = "0" *)
(* C_HAS_MEM_OUTPUT_REGS_A = "0" *)
(* C_HAS_MEM_OUTPUT_REGS_B = "0" *)
(* C_HAS_MUX_OUTPUT_REGS_A = "0" *)
(* C_HAS_MUX_OUTPUT_REGS_B = "0" *)
(* C_HAS_REGCEA = "0" *)
(* C_HAS_REGCEB = "0" *)
(* C_HAS_RSTA = "0" *)
(* C_HAS_RSTB = "0" *)
(* C_HAS_SOFTECC_INPUT_REGS_A = "0" *)
(* C_HAS_SOFTECC_OUTPUT_REGS_B = "0" *)
(* C_INITA_VAL = "0" *)
(* C_INITB_VAL = "0" *)
(* C_INIT_FILE = "hop_rom.mem" *)
(* C_INIT_FILE_NAME = "hop_rom.mif" *)
(* C_INTERFACE_TYPE = "0" *)
(* C_LOAD_INIT_FILE = "1" *)
(* C_MEM_TYPE = "3" *)
(* C_MUX_PIPELINE_STAGES = "0" *)
(* C_PRIM_TYPE = "1" *)
(* C_READ_DEPTH_A = "256" *)
(* C_READ_DEPTH_B = "256" *)
(* C_READ_LATENCY_A = "1" *)
(* C_READ_LATENCY_B = "1" *)
(* C_READ_WIDTH_A = "32" *)
(* C_READ_WIDTH_B = "32" *)
(* C_RSTRAM_A = "0" *)
(* C_RSTRAM_B = "0" *)
(* C_RST_PRIORITY_A = "CE" *)
(* C_RST_PRIORITY_B = "CE" *)
(* C_SIM_COLLISION_CHECK = "ALL" *)
(* C_USE_BRAM_BLOCK = "0" *)
(* C_USE_BYTE_WEA = "0" *)
(* C_USE_BYTE_WEB = "0" *)
(* C_USE_DEFAULT_DATA = "0" *)
(* C_USE_ECC = "0" *)
(* C_USE_SOFTECC = "0" *)
(* C_USE_URAM = "0" *)
(* C_WEA_WIDTH = "1" *)
(* C_WEB_WIDTH = "1" *)
(* C_WRITE_DEPTH_A = "256" *)
(* C_WRITE_DEPTH_B = "256" *)
(* C_WRITE_MODE_A = "WRITE_FIRST" *)
(* C_WRITE_MODE_B = "WRITE_FIRST" *)
(* C_WRITE_WIDTH_A = "32" *)
(* C_WRITE_WIDTH_B = "32" *)
(* C_XDEVICEFAMILY = "kintex7" *)
(* downgradeipidentifiedwarnings = "yes" *)
hop_rom_blk_mem_gen_v8_4_3 U0
(.addra(addra),
.addrb({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.clka(clka),
.clkb(1'b0),
.dbiterr(NLW_U0_dbiterr_UNCONNECTED),
.deepsleep(1'b0),
.dina({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.dinb({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.douta(douta),
.doutb(NLW_U0_doutb_UNCONNECTED[31:0]),
.eccpipece(1'b0),
.ena(1'b0),
.enb(1'b0),
.injectdbiterr(1'b0),
.injectsbiterr(1'b0),
.rdaddrecc(NLW_U0_rdaddrecc_UNCONNECTED[7:0]),
.regcea(1'b0),
.regceb(1'b0),
.rsta(1'b0),
.rsta_busy(NLW_U0_rsta_busy_UNCONNECTED),
.rstb(1'b0),
.rstb_busy(NLW_U0_rstb_busy_UNCONNECTED),
.s_aclk(1'b0),
.s_aresetn(1'b0),
.s_axi_araddr({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.s_axi_arburst({1'b0,1'b0}),
.s_axi_arid({1'b0,1'b0,1'b0,1'b0}),
.s_axi_arlen({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.s_axi_arready(NLW_U0_s_axi_arready_UNCONNECTED),
.s_axi_arsize({1'b0,1'b0,1'b0}),
.s_axi_arvalid(1'b0),
.s_axi_awaddr({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.s_axi_awburst({1'b0,1'b0}),
.s_axi_awid({1'b0,1'b0,1'b0,1'b0}),
.s_axi_awlen({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.s_axi_awready(NLW_U0_s_axi_awready_UNCONNECTED),
.s_axi_awsize({1'b0,1'b0,1'b0}),
.s_axi_awvalid(1'b0),
.s_axi_bid(NLW_U0_s_axi_bid_UNCONNECTED[3:0]),
.s_axi_bready(1'b0),
.s_axi_bresp(NLW_U0_s_axi_bresp_UNCONNECTED[1:0]),
.s_axi_bvalid(NLW_U0_s_axi_bvalid_UNCONNECTED),
.s_axi_dbiterr(NLW_U0_s_axi_dbiterr_UNCONNECTED),
.s_axi_injectdbiterr(1'b0),
.s_axi_injectsbiterr(1'b0),
.s_axi_rdaddrecc(NLW_U0_s_axi_rdaddrecc_UNCONNECTED[7:0]),
.s_axi_rdata(NLW_U0_s_axi_rdata_UNCONNECTED[31:0]),
.s_axi_rid(NLW_U0_s_axi_rid_UNCONNECTED[3:0]),
.s_axi_rlast(NLW_U0_s_axi_rlast_UNCONNECTED),
.s_axi_rready(1'b0),
.s_axi_rresp(NLW_U0_s_axi_rresp_UNCONNECTED[1:0]),
.s_axi_rvalid(NLW_U0_s_axi_rvalid_UNCONNECTED),
.s_axi_sbiterr(NLW_U0_s_axi_sbiterr_UNCONNECTED),
.s_axi_wdata({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.s_axi_wlast(1'b0),
.s_axi_wready(NLW_U0_s_axi_wready_UNCONNECTED),
.s_axi_wstrb(1'b0),
.s_axi_wvalid(1'b0),
.sbiterr(NLW_U0_sbiterr_UNCONNECTED),
.shutdown(1'b0),
.sleep(1'b0),
.wea(1'b0),
.web(1'b0));
endmodule
(* ORIG_REF_NAME = "blk_mem_gen_generic_cstr" *)
module hop_rom_blk_mem_gen_generic_cstr
(douta,
clka,
addra);
output [31:0]douta;
input clka;
input [7:0]addra;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
hop_rom_blk_mem_gen_prim_width \ramloop[0].ram.r
(.addra(addra),
.clka(clka),
.douta(douta));
endmodule
(* ORIG_REF_NAME = "blk_mem_gen_prim_width" *)
module hop_rom_blk_mem_gen_prim_width
(douta,
clka,
addra);
output [31:0]douta;
input clka;
input [7:0]addra;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
hop_rom_blk_mem_gen_prim_wrapper_init \prim_init.ram
(.addra(addra),
.clka(clka),
.douta(douta));
endmodule
(* ORIG_REF_NAME = "blk_mem_gen_prim_wrapper_init" *)
module hop_rom_blk_mem_gen_prim_wrapper_init
(douta,
clka,
addra);
output [31:0]douta;
input clka;
input [7:0]addra;
wire \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_32 ;
wire \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_33 ;
wire \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_34 ;
wire \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_35 ;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
(* box_type = "PRIMITIVE" *)
RAMB18E1 #(
.DOA_REG(0),
.DOB_REG(0),
.INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_00(256'h8707070886060607850505068404040583030304820202038101010280000001),
.INIT_01(256'h8F0F0F108E0E0E0F8D0D0D0E8C0C0C0D8B0B0B0C8A0A0A0B8909090A88080809),
.INIT_02(256'h9717171896161617951515169414141593131314921212139111111290101011),
.INIT_03(256'h9F1F1F209E1E1E1F9D1D1D1E9C1C1C1D9B1B1B1C9A1A1A1B9919191A98181819),
.INIT_04(256'hA7272728A6262627A5252526A4242425A3232324A2222223A1212122A0202021),
.INIT_05(256'hAF2F2F30AE2E2E2FAD2D2D2EAC2C2C2DAB2B2B2CAA2A2A2BA929292AA8282829),
.INIT_06(256'hB7373738B6363637B5353536B4343435B3333334B2323233B1313132B0303031),
.INIT_07(256'hBF3F3F40BE3E3E3FBD3D3D3EBC3C3C3DBB3B3B3CBA3A3A3BB939393AB8383839),
.INIT_08(256'hC7474748C6464647C5454546C4444445C3434344C2424243C1414142C0404041),
.INIT_09(256'hCF4F4F50CE4E4E4FCD4D4D4ECC4C4C4DCB4B4B4CCA4A4A4BC949494AC8484849),
.INIT_0A(256'hD7575758D6565657D5555556D4545455D3535354D2525253D1515152D0505051),
.INIT_0B(256'hDF5F5F60DE5E5E5FDD5D5D5EDC5C5C5DDB5B5B5CDA5A5A5BD959595AD8585859),
.INIT_0C(256'hE7676768E6666667E5656566E4646465E3636364E2626263E1616162E0606061),
.INIT_0D(256'hEF6F6F70EE6E6E6FED6D6D6EEC6C6C6DEB6B6B6CEA6A6A6BE969696AE8686869),
.INIT_0E(256'hF7777778F6767677F5757576F4747475F3737374F2727273F1717172F0707071),
.INIT_0F(256'hFF7F7F80FE7E7E7FFD7D7D7EFC7C7C7DFB7B7B7CFA7A7A7BF979797AF8787879),
.INIT_10(256'h0787878706868686058585850484848403838383028282820181818100808080),
.INIT_11(256'h0F8F8F8F0E8E8E8E0D8D8D8D0C8C8C8C0B8B8B8B0A8A8A8A0989898908888888),
.INIT_12(256'h1797979716969696159595951494949413939393129292921191919110909090),
.INIT_13(256'h1F9F9F9F1E9E9E9E1D9D9D9D1C9C9C9C1B9B9B9B1A9A9A9A1999999918989898),
.INIT_14(256'h27A7A7A726A6A6A625A5A5A524A4A4A423A3A3A322A2A2A221A1A1A120A0A0A0),
.INIT_15(256'h2FAFAFAF2EAEAEAE2DADADAD2CACACAC2BABABAB2AAAAAAA29A9A9A928A8A8A8),
.INIT_16(256'h37B7B7B736B6B6B635B5B5B534B4B4B433B3B3B332B2B2B231B1B1B130B0B0B0),
.INIT_17(256'h3FBFBFBF3EBEBEBE3DBDBDBD3CBCBCBC3BBBBBBB3ABABABA39B9B9B938B8B8B8),
.INIT_18(256'h47C7C7C746C6C6C645C5C5C544C4C4C443C3C3C342C2C2C241C1C1C140C0C0C0),
.INIT_19(256'h4FCFCFCF4ECECECE4DCDCDCD4CCCCCCC4BCBCBCB4ACACACA49C9C9C948C8C8C8),
.INIT_1A(256'h57D7D7D756D6D6D655D5D5D554D4D4D453D3D3D352D2D2D251D1D1D150D0D0D0),
.INIT_1B(256'h5FDFDFDF5EDEDEDE5DDDDDDD5CDCDCDC5BDBDBDB5ADADADA59D9D9D958D8D8D8),
.INIT_1C(256'h67E7E7E766E6E6E665E5E5E564E4E4E463E3E3E362E2E2E261E1E1E160E0E0E0),
.INIT_1D(256'h6FEFEFEF6EEEEEEE6DEDEDED6CECECEC6BEBEBEB6AEAEAEA69E9E9E968E8E8E8),
.INIT_1E(256'h77F7F7F776F6F6F675F5F5F574F4F4F473F3F3F372F2F2F271F1F1F170F0F0F0),
.INIT_1F(256'h7FFFFFFF7EFEFEFE7DFDFDFD7CFCFCFC7BFBFBFB7AFAFAFA79F9F9F978F8F8F8),
.INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000),
.INIT_A(18'h00000),
.INIT_B(18'h00000),
.INIT_FILE("NONE"),
.IS_CLKARDCLK_INVERTED(1'b0),
.IS_CLKBWRCLK_INVERTED(1'b0),
.IS_ENARDEN_INVERTED(1'b0),
.IS_ENBWREN_INVERTED(1'b0),
.IS_RSTRAMARSTRAM_INVERTED(1'b0),
.IS_RSTRAMB_INVERTED(1'b0),
.IS_RSTREGARSTREG_INVERTED(1'b0),
.IS_RSTREGB_INVERTED(1'b0),
.RAM_MODE("TDP"),
.RDADDR_COLLISION_HWCONFIG("PERFORMANCE"),
.READ_WIDTH_A(18),
.READ_WIDTH_B(18),
.RSTREG_PRIORITY_A("REGCE"),
.RSTREG_PRIORITY_B("REGCE"),
.SIM_COLLISION_CHECK("ALL"),
.SIM_DEVICE("7SERIES"),
.SRVAL_A(18'h00000),
.SRVAL_B(18'h00000),
.WRITE_MODE_A("WRITE_FIRST"),
.WRITE_MODE_B("WRITE_FIRST"),
.WRITE_WIDTH_A(18),
.WRITE_WIDTH_B(18))
\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram
(.ADDRARDADDR({1'b0,addra,1'b0,1'b0,1'b0,1'b0,1'b0}),
.ADDRBWRADDR({1'b0,addra,1'b1,1'b0,1'b0,1'b0,1'b0}),
.CLKARDCLK(clka),
.CLKBWRCLK(clka),
.DIADI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.DIBDI({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}),
.DIPADIP({1'b0,1'b0}),
.DIPBDIP({1'b0,1'b0}),
.DOADO(douta[15:0]),
.DOBDO(douta[31:16]),
.DOPADOP({\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_32 ,\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_33 }),
.DOPBDOP({\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_34 ,\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_35 }),
.ENARDEN(1'b1),
.ENBWREN(1'b1),
.REGCEAREGCE(1'b0),
.REGCEB(1'b0),
.RSTRAMARSTRAM(1'b0),
.RSTRAMB(1'b0),
.RSTREGARSTREG(1'b0),
.RSTREGB(1'b0),
.WEA({1'b0,1'b0}),
.WEBWE({1'b0,1'b0,1'b0,1'b0}));
endmodule
(* ORIG_REF_NAME = "blk_mem_gen_top" *)
module hop_rom_blk_mem_gen_top
(douta,
clka,
addra);
output [31:0]douta;
input clka;
input [7:0]addra;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
hop_rom_blk_mem_gen_generic_cstr \valid.cstr
(.addra(addra),
.clka(clka),
.douta(douta));
endmodule
(* C_ADDRA_WIDTH = "8" *) (* C_ADDRB_WIDTH = "8" *) (* C_ALGORITHM = "1" *)
(* C_AXI_ID_WIDTH = "4" *) (* C_AXI_SLAVE_TYPE = "0" *) (* C_AXI_TYPE = "1" *)
(* C_BYTE_SIZE = "9" *) (* C_COMMON_CLK = "0" *) (* C_COUNT_18K_BRAM = "1" *)
(* C_COUNT_36K_BRAM = "0" *) (* C_CTRL_ECC_ALGO = "NONE" *) (* C_DEFAULT_DATA = "0" *)
(* C_DISABLE_WARN_BHV_COLL = "0" *) (* C_DISABLE_WARN_BHV_RANGE = "0" *) (* C_ELABORATION_DIR = "./" *)
(* C_ENABLE_32BIT_ADDRESS = "0" *) (* C_EN_DEEPSLEEP_PIN = "0" *) (* C_EN_ECC_PIPE = "0" *)
(* C_EN_RDADDRA_CHG = "0" *) (* C_EN_RDADDRB_CHG = "0" *) (* C_EN_SAFETY_CKT = "0" *)
(* C_EN_SHUTDOWN_PIN = "0" *) (* C_EN_SLEEP_PIN = "0" *) (* C_EST_POWER_SUMMARY = "Estimated Power for IP : 3.375199 mW" *)
(* C_FAMILY = "kintex7" *) (* C_HAS_AXI_ID = "0" *) (* C_HAS_ENA = "0" *)
(* C_HAS_ENB = "0" *) (* C_HAS_INJECTERR = "0" *) (* C_HAS_MEM_OUTPUT_REGS_A = "0" *)
(* C_HAS_MEM_OUTPUT_REGS_B = "0" *) (* C_HAS_MUX_OUTPUT_REGS_A = "0" *) (* C_HAS_MUX_OUTPUT_REGS_B = "0" *)
(* C_HAS_REGCEA = "0" *) (* C_HAS_REGCEB = "0" *) (* C_HAS_RSTA = "0" *)
(* C_HAS_RSTB = "0" *) (* C_HAS_SOFTECC_INPUT_REGS_A = "0" *) (* C_HAS_SOFTECC_OUTPUT_REGS_B = "0" *)
(* C_INITA_VAL = "0" *) (* C_INITB_VAL = "0" *) (* C_INIT_FILE = "hop_rom.mem" *)
(* C_INIT_FILE_NAME = "hop_rom.mif" *) (* C_INTERFACE_TYPE = "0" *) (* C_LOAD_INIT_FILE = "1" *)
(* C_MEM_TYPE = "3" *) (* C_MUX_PIPELINE_STAGES = "0" *) (* C_PRIM_TYPE = "1" *)
(* C_READ_DEPTH_A = "256" *) (* C_READ_DEPTH_B = "256" *) (* C_READ_LATENCY_A = "1" *)
(* C_READ_LATENCY_B = "1" *) (* C_READ_WIDTH_A = "32" *) (* C_READ_WIDTH_B = "32" *)
(* C_RSTRAM_A = "0" *) (* C_RSTRAM_B = "0" *) (* C_RST_PRIORITY_A = "CE" *)
(* C_RST_PRIORITY_B = "CE" *) (* C_SIM_COLLISION_CHECK = "ALL" *) (* C_USE_BRAM_BLOCK = "0" *)
(* C_USE_BYTE_WEA = "0" *) (* C_USE_BYTE_WEB = "0" *) (* C_USE_DEFAULT_DATA = "0" *)
(* C_USE_ECC = "0" *) (* C_USE_SOFTECC = "0" *) (* C_USE_URAM = "0" *)
(* C_WEA_WIDTH = "1" *) (* C_WEB_WIDTH = "1" *) (* C_WRITE_DEPTH_A = "256" *)
(* C_WRITE_DEPTH_B = "256" *) (* C_WRITE_MODE_A = "WRITE_FIRST" *) (* C_WRITE_MODE_B = "WRITE_FIRST" *)
(* C_WRITE_WIDTH_A = "32" *) (* C_WRITE_WIDTH_B = "32" *) (* C_XDEVICEFAMILY = "kintex7" *)
(* ORIG_REF_NAME = "blk_mem_gen_v8_4_3" *) (* downgradeipidentifiedwarnings = "yes" *)
module hop_rom_blk_mem_gen_v8_4_3
(clka,
rsta,
ena,
regcea,
wea,
addra,
dina,
douta,
clkb,
rstb,
enb,
regceb,
web,
addrb,
dinb,
doutb,
injectsbiterr,
injectdbiterr,
eccpipece,
sbiterr,
dbiterr,
rdaddrecc,
sleep,
deepsleep,
shutdown,
rsta_busy,
rstb_busy,
s_aclk,
s_aresetn,
s_axi_awid,
s_axi_awaddr,
s_axi_awlen,
s_axi_awsize,
s_axi_awburst,
s_axi_awvalid,
s_axi_awready,
s_axi_wdata,
s_axi_wstrb,
s_axi_wlast,
s_axi_wvalid,
s_axi_wready,
s_axi_bid,
s_axi_bresp,
s_axi_bvalid,
s_axi_bready,
s_axi_arid,
s_axi_araddr,
s_axi_arlen,
s_axi_arsize,
s_axi_arburst,
s_axi_arvalid,
s_axi_arready,
s_axi_rid,
s_axi_rdata,
s_axi_rresp,
s_axi_rlast,
s_axi_rvalid,
s_axi_rready,
s_axi_injectsbiterr,
s_axi_injectdbiterr,
s_axi_sbiterr,
s_axi_dbiterr,
s_axi_rdaddrecc);
input clka;
input rsta;
input ena;
input regcea;
input [0:0]wea;
input [7:0]addra;
input [31:0]dina;
output [31:0]douta;
input clkb;
input rstb;
input enb;
input regceb;
input [0:0]web;
input [7:0]addrb;
input [31:0]dinb;
output [31:0]doutb;
input injectsbiterr;
input injectdbiterr;
input eccpipece;
output sbiterr;
output dbiterr;
output [7:0]rdaddrecc;
input sleep;
input deepsleep;
input shutdown;
output rsta_busy;
output rstb_busy;
input s_aclk;
input s_aresetn;
input [3:0]s_axi_awid;
input [31:0]s_axi_awaddr;
input [7:0]s_axi_awlen;
input [2:0]s_axi_awsize;
input [1:0]s_axi_awburst;
input s_axi_awvalid;
output s_axi_awready;
input [31:0]s_axi_wdata;
input [0:0]s_axi_wstrb;
input s_axi_wlast;
input s_axi_wvalid;
output s_axi_wready;
output [3:0]s_axi_bid;
output [1:0]s_axi_bresp;
output s_axi_bvalid;
input s_axi_bready;
input [3:0]s_axi_arid;
input [31:0]s_axi_araddr;
input [7:0]s_axi_arlen;
input [2:0]s_axi_arsize;
input [1:0]s_axi_arburst;
input s_axi_arvalid;
output s_axi_arready;
output [3:0]s_axi_rid;
output [31:0]s_axi_rdata;
output [1:0]s_axi_rresp;
output s_axi_rlast;
output s_axi_rvalid;
input s_axi_rready;
input s_axi_injectsbiterr;
input s_axi_injectdbiterr;
output s_axi_sbiterr;
output s_axi_dbiterr;
output [7:0]s_axi_rdaddrecc;
wire \<const0> ;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
assign dbiterr = \<const0> ;
assign doutb[31] = \<const0> ;
assign doutb[30] = \<const0> ;
assign doutb[29] = \<const0> ;
assign doutb[28] = \<const0> ;
assign doutb[27] = \<const0> ;
assign doutb[26] = \<const0> ;
assign doutb[25] = \<const0> ;
assign doutb[24] = \<const0> ;
assign doutb[23] = \<const0> ;
assign doutb[22] = \<const0> ;
assign doutb[21] = \<const0> ;
assign doutb[20] = \<const0> ;
assign doutb[19] = \<const0> ;
assign doutb[18] = \<const0> ;
assign doutb[17] = \<const0> ;
assign doutb[16] = \<const0> ;
assign doutb[15] = \<const0> ;
assign doutb[14] = \<const0> ;
assign doutb[13] = \<const0> ;
assign doutb[12] = \<const0> ;
assign doutb[11] = \<const0> ;
assign doutb[10] = \<const0> ;
assign doutb[9] = \<const0> ;
assign doutb[8] = \<const0> ;
assign doutb[7] = \<const0> ;
assign doutb[6] = \<const0> ;
assign doutb[5] = \<const0> ;
assign doutb[4] = \<const0> ;
assign doutb[3] = \<const0> ;
assign doutb[2] = \<const0> ;
assign doutb[1] = \<const0> ;
assign doutb[0] = \<const0> ;
assign rdaddrecc[7] = \<const0> ;
assign rdaddrecc[6] = \<const0> ;
assign rdaddrecc[5] = \<const0> ;
assign rdaddrecc[4] = \<const0> ;
assign rdaddrecc[3] = \<const0> ;
assign rdaddrecc[2] = \<const0> ;
assign rdaddrecc[1] = \<const0> ;
assign rdaddrecc[0] = \<const0> ;
assign rsta_busy = \<const0> ;
assign rstb_busy = \<const0> ;
assign s_axi_arready = \<const0> ;
assign s_axi_awready = \<const0> ;
assign s_axi_bid[3] = \<const0> ;
assign s_axi_bid[2] = \<const0> ;
assign s_axi_bid[1] = \<const0> ;
assign s_axi_bid[0] = \<const0> ;
assign s_axi_bresp[1] = \<const0> ;
assign s_axi_bresp[0] = \<const0> ;
assign s_axi_bvalid = \<const0> ;
assign s_axi_dbiterr = \<const0> ;
assign s_axi_rdaddrecc[7] = \<const0> ;
assign s_axi_rdaddrecc[6] = \<const0> ;
assign s_axi_rdaddrecc[5] = \<const0> ;
assign s_axi_rdaddrecc[4] = \<const0> ;
assign s_axi_rdaddrecc[3] = \<const0> ;
assign s_axi_rdaddrecc[2] = \<const0> ;
assign s_axi_rdaddrecc[1] = \<const0> ;
assign s_axi_rdaddrecc[0] = \<const0> ;
assign s_axi_rdata[31] = \<const0> ;
assign s_axi_rdata[30] = \<const0> ;
assign s_axi_rdata[29] = \<const0> ;
assign s_axi_rdata[28] = \<const0> ;
assign s_axi_rdata[27] = \<const0> ;
assign s_axi_rdata[26] = \<const0> ;
assign s_axi_rdata[25] = \<const0> ;
assign s_axi_rdata[24] = \<const0> ;
assign s_axi_rdata[23] = \<const0> ;
assign s_axi_rdata[22] = \<const0> ;
assign s_axi_rdata[21] = \<const0> ;
assign s_axi_rdata[20] = \<const0> ;
assign s_axi_rdata[19] = \<const0> ;
assign s_axi_rdata[18] = \<const0> ;
assign s_axi_rdata[17] = \<const0> ;
assign s_axi_rdata[16] = \<const0> ;
assign s_axi_rdata[15] = \<const0> ;
assign s_axi_rdata[14] = \<const0> ;
assign s_axi_rdata[13] = \<const0> ;
assign s_axi_rdata[12] = \<const0> ;
assign s_axi_rdata[11] = \<const0> ;
assign s_axi_rdata[10] = \<const0> ;
assign s_axi_rdata[9] = \<const0> ;
assign s_axi_rdata[8] = \<const0> ;
assign s_axi_rdata[7] = \<const0> ;
assign s_axi_rdata[6] = \<const0> ;
assign s_axi_rdata[5] = \<const0> ;
assign s_axi_rdata[4] = \<const0> ;
assign s_axi_rdata[3] = \<const0> ;
assign s_axi_rdata[2] = \<const0> ;
assign s_axi_rdata[1] = \<const0> ;
assign s_axi_rdata[0] = \<const0> ;
assign s_axi_rid[3] = \<const0> ;
assign s_axi_rid[2] = \<const0> ;
assign s_axi_rid[1] = \<const0> ;
assign s_axi_rid[0] = \<const0> ;
assign s_axi_rlast = \<const0> ;
assign s_axi_rresp[1] = \<const0> ;
assign s_axi_rresp[0] = \<const0> ;
assign s_axi_rvalid = \<const0> ;
assign s_axi_sbiterr = \<const0> ;
assign s_axi_wready = \<const0> ;
assign sbiterr = \<const0> ;
GND GND
(.G(\<const0> ));
hop_rom_blk_mem_gen_v8_4_3_synth inst_blk_mem_gen
(.addra(addra),
.clka(clka),
.douta(douta));
endmodule
(* ORIG_REF_NAME = "blk_mem_gen_v8_4_3_synth" *)
module hop_rom_blk_mem_gen_v8_4_3_synth
(douta,
clka,
addra);
output [31:0]douta;
input clka;
input [7:0]addra;
wire [7:0]addra;
wire clka;
wire [31:0]douta;
hop_rom_blk_mem_gen_top \gnbram.gnativebmg.native_blk_mem_gen
(.addra(addra),
.clka(clka),
.douta(douta));
endmodule
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,869 @@
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-- --------------------------------------------------------------------------------
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
-- Date : Sat Mar 18 23:15:57 2023
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
-- Command : write_vhdl -force -mode funcsim
-- D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hop_rom_synth_1/hop_rom_sim_netlist.vhdl
-- Design : hop_rom
-- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or
-- synthesized. This netlist cannot be used for SDF annotated simulation.
-- Device : xc7k410tffg900-2
-- --------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_prim_wrapper_init is
port (
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_prim_wrapper_init : entity is "blk_mem_gen_prim_wrapper_init";
end hop_rom_blk_mem_gen_prim_wrapper_init;
architecture STRUCTURE of hop_rom_blk_mem_gen_prim_wrapper_init is
signal \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_32\ : STD_LOGIC;
signal \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_33\ : STD_LOGIC;
signal \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_34\ : STD_LOGIC;
signal \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_35\ : STD_LOGIC;
attribute box_type : string;
attribute box_type of \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram\ : label is "PRIMITIVE";
begin
\DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram\: unisim.vcomponents.RAMB18E1
generic map(
DOA_REG => 0,
DOB_REG => 0,
INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_00 => X"8707070886060607850505068404040583030304820202038101010280000001",
INIT_01 => X"8F0F0F108E0E0E0F8D0D0D0E8C0C0C0D8B0B0B0C8A0A0A0B8909090A88080809",
INIT_02 => X"9717171896161617951515169414141593131314921212139111111290101011",
INIT_03 => X"9F1F1F209E1E1E1F9D1D1D1E9C1C1C1D9B1B1B1C9A1A1A1B9919191A98181819",
INIT_04 => X"A7272728A6262627A5252526A4242425A3232324A2222223A1212122A0202021",
INIT_05 => X"AF2F2F30AE2E2E2FAD2D2D2EAC2C2C2DAB2B2B2CAA2A2A2BA929292AA8282829",
INIT_06 => X"B7373738B6363637B5353536B4343435B3333334B2323233B1313132B0303031",
INIT_07 => X"BF3F3F40BE3E3E3FBD3D3D3EBC3C3C3DBB3B3B3CBA3A3A3BB939393AB8383839",
INIT_08 => X"C7474748C6464647C5454546C4444445C3434344C2424243C1414142C0404041",
INIT_09 => X"CF4F4F50CE4E4E4FCD4D4D4ECC4C4C4DCB4B4B4CCA4A4A4BC949494AC8484849",
INIT_0A => X"D7575758D6565657D5555556D4545455D3535354D2525253D1515152D0505051",
INIT_0B => X"DF5F5F60DE5E5E5FDD5D5D5EDC5C5C5DDB5B5B5CDA5A5A5BD959595AD8585859",
INIT_0C => X"E7676768E6666667E5656566E4646465E3636364E2626263E1616162E0606061",
INIT_0D => X"EF6F6F70EE6E6E6FED6D6D6EEC6C6C6DEB6B6B6CEA6A6A6BE969696AE8686869",
INIT_0E => X"F7777778F6767677F5757576F4747475F3737374F2727273F1717172F0707071",
INIT_0F => X"FF7F7F80FE7E7E7FFD7D7D7EFC7C7C7DFB7B7B7CFA7A7A7BF979797AF8787879",
INIT_10 => X"0787878706868686058585850484848403838383028282820181818100808080",
INIT_11 => X"0F8F8F8F0E8E8E8E0D8D8D8D0C8C8C8C0B8B8B8B0A8A8A8A0989898908888888",
INIT_12 => X"1797979716969696159595951494949413939393129292921191919110909090",
INIT_13 => X"1F9F9F9F1E9E9E9E1D9D9D9D1C9C9C9C1B9B9B9B1A9A9A9A1999999918989898",
INIT_14 => X"27A7A7A726A6A6A625A5A5A524A4A4A423A3A3A322A2A2A221A1A1A120A0A0A0",
INIT_15 => X"2FAFAFAF2EAEAEAE2DADADAD2CACACAC2BABABAB2AAAAAAA29A9A9A928A8A8A8",
INIT_16 => X"37B7B7B736B6B6B635B5B5B534B4B4B433B3B3B332B2B2B231B1B1B130B0B0B0",
INIT_17 => X"3FBFBFBF3EBEBEBE3DBDBDBD3CBCBCBC3BBBBBBB3ABABABA39B9B9B938B8B8B8",
INIT_18 => X"47C7C7C746C6C6C645C5C5C544C4C4C443C3C3C342C2C2C241C1C1C140C0C0C0",
INIT_19 => X"4FCFCFCF4ECECECE4DCDCDCD4CCCCCCC4BCBCBCB4ACACACA49C9C9C948C8C8C8",
INIT_1A => X"57D7D7D756D6D6D655D5D5D554D4D4D453D3D3D352D2D2D251D1D1D150D0D0D0",
INIT_1B => X"5FDFDFDF5EDEDEDE5DDDDDDD5CDCDCDC5BDBDBDB5ADADADA59D9D9D958D8D8D8",
INIT_1C => X"67E7E7E766E6E6E665E5E5E564E4E4E463E3E3E362E2E2E261E1E1E160E0E0E0",
INIT_1D => X"6FEFEFEF6EEEEEEE6DEDEDED6CECECEC6BEBEBEB6AEAEAEA69E9E9E968E8E8E8",
INIT_1E => X"77F7F7F776F6F6F675F5F5F574F4F4F473F3F3F372F2F2F271F1F1F170F0F0F0",
INIT_1F => X"7FFFFFFF7EFEFEFE7DFDFDFD7CFCFCFC7BFBFBFB7AFAFAFA79F9F9F978F8F8F8",
INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000",
INIT_A => X"00000",
INIT_B => X"00000",
INIT_FILE => "NONE",
IS_CLKARDCLK_INVERTED => '0',
IS_CLKBWRCLK_INVERTED => '0',
IS_ENARDEN_INVERTED => '0',
IS_ENBWREN_INVERTED => '0',
IS_RSTRAMARSTRAM_INVERTED => '0',
IS_RSTRAMB_INVERTED => '0',
IS_RSTREGARSTREG_INVERTED => '0',
IS_RSTREGB_INVERTED => '0',
RAM_MODE => "TDP",
RDADDR_COLLISION_HWCONFIG => "PERFORMANCE",
READ_WIDTH_A => 18,
READ_WIDTH_B => 18,
RSTREG_PRIORITY_A => "REGCE",
RSTREG_PRIORITY_B => "REGCE",
SIM_COLLISION_CHECK => "ALL",
SIM_DEVICE => "7SERIES",
SRVAL_A => X"00000",
SRVAL_B => X"00000",
WRITE_MODE_A => "WRITE_FIRST",
WRITE_MODE_B => "WRITE_FIRST",
WRITE_WIDTH_A => 18,
WRITE_WIDTH_B => 18
)
port map (
ADDRARDADDR(13) => '0',
ADDRARDADDR(12 downto 5) => addra(7 downto 0),
ADDRARDADDR(4 downto 0) => B"00000",
ADDRBWRADDR(13) => '0',
ADDRBWRADDR(12 downto 5) => addra(7 downto 0),
ADDRBWRADDR(4 downto 0) => B"10000",
CLKARDCLK => clka,
CLKBWRCLK => clka,
DIADI(15 downto 0) => B"0000000000000000",
DIBDI(15 downto 0) => B"0000000000000000",
DIPADIP(1 downto 0) => B"00",
DIPBDIP(1 downto 0) => B"00",
DOADO(15 downto 0) => douta(15 downto 0),
DOBDO(15 downto 0) => douta(31 downto 16),
DOPADOP(1) => \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_32\,
DOPADOP(0) => \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_33\,
DOPBDOP(1) => \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_34\,
DOPBDOP(0) => \DEVICE_7SERIES.NO_BMM_INFO.SP.WIDE_PRIM18.ram_n_35\,
ENARDEN => '1',
ENBWREN => '1',
REGCEAREGCE => '0',
REGCEB => '0',
RSTRAMARSTRAM => '0',
RSTRAMB => '0',
RSTREGARSTREG => '0',
RSTREGB => '0',
WEA(1 downto 0) => B"00",
WEBWE(3 downto 0) => B"0000"
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_prim_width is
port (
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_prim_width : entity is "blk_mem_gen_prim_width";
end hop_rom_blk_mem_gen_prim_width;
architecture STRUCTURE of hop_rom_blk_mem_gen_prim_width is
begin
\prim_init.ram\: entity work.hop_rom_blk_mem_gen_prim_wrapper_init
port map (
addra(7 downto 0) => addra(7 downto 0),
clka => clka,
douta(31 downto 0) => douta(31 downto 0)
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_generic_cstr is
port (
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_generic_cstr : entity is "blk_mem_gen_generic_cstr";
end hop_rom_blk_mem_gen_generic_cstr;
architecture STRUCTURE of hop_rom_blk_mem_gen_generic_cstr is
begin
\ramloop[0].ram.r\: entity work.hop_rom_blk_mem_gen_prim_width
port map (
addra(7 downto 0) => addra(7 downto 0),
clka => clka,
douta(31 downto 0) => douta(31 downto 0)
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_top is
port (
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_top : entity is "blk_mem_gen_top";
end hop_rom_blk_mem_gen_top;
architecture STRUCTURE of hop_rom_blk_mem_gen_top is
begin
\valid.cstr\: entity work.hop_rom_blk_mem_gen_generic_cstr
port map (
addra(7 downto 0) => addra(7 downto 0),
clka => clka,
douta(31 downto 0) => douta(31 downto 0)
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_v8_4_3_synth is
port (
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_v8_4_3_synth : entity is "blk_mem_gen_v8_4_3_synth";
end hop_rom_blk_mem_gen_v8_4_3_synth;
architecture STRUCTURE of hop_rom_blk_mem_gen_v8_4_3_synth is
begin
\gnbram.gnativebmg.native_blk_mem_gen\: entity work.hop_rom_blk_mem_gen_top
port map (
addra(7 downto 0) => addra(7 downto 0),
clka => clka,
douta(31 downto 0) => douta(31 downto 0)
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom_blk_mem_gen_v8_4_3 is
port (
clka : in STD_LOGIC;
rsta : in STD_LOGIC;
ena : in STD_LOGIC;
regcea : in STD_LOGIC;
wea : in STD_LOGIC_VECTOR ( 0 to 0 );
addra : in STD_LOGIC_VECTOR ( 7 downto 0 );
dina : in STD_LOGIC_VECTOR ( 31 downto 0 );
douta : out STD_LOGIC_VECTOR ( 31 downto 0 );
clkb : in STD_LOGIC;
rstb : in STD_LOGIC;
enb : in STD_LOGIC;
regceb : in STD_LOGIC;
web : in STD_LOGIC_VECTOR ( 0 to 0 );
addrb : in STD_LOGIC_VECTOR ( 7 downto 0 );
dinb : in STD_LOGIC_VECTOR ( 31 downto 0 );
doutb : out STD_LOGIC_VECTOR ( 31 downto 0 );
injectsbiterr : in STD_LOGIC;
injectdbiterr : in STD_LOGIC;
eccpipece : in STD_LOGIC;
sbiterr : out STD_LOGIC;
dbiterr : out STD_LOGIC;
rdaddrecc : out STD_LOGIC_VECTOR ( 7 downto 0 );
sleep : in STD_LOGIC;
deepsleep : in STD_LOGIC;
shutdown : in STD_LOGIC;
rsta_busy : out STD_LOGIC;
rstb_busy : out STD_LOGIC;
s_aclk : in STD_LOGIC;
s_aresetn : in STD_LOGIC;
s_axi_awid : in STD_LOGIC_VECTOR ( 3 downto 0 );
s_axi_awaddr : in STD_LOGIC_VECTOR ( 31 downto 0 );
s_axi_awlen : in STD_LOGIC_VECTOR ( 7 downto 0 );
s_axi_awsize : in STD_LOGIC_VECTOR ( 2 downto 0 );
s_axi_awburst : in STD_LOGIC_VECTOR ( 1 downto 0 );
s_axi_awvalid : in STD_LOGIC;
s_axi_awready : out STD_LOGIC;
s_axi_wdata : in STD_LOGIC_VECTOR ( 31 downto 0 );
s_axi_wstrb : in STD_LOGIC_VECTOR ( 0 to 0 );
s_axi_wlast : in STD_LOGIC;
s_axi_wvalid : in STD_LOGIC;
s_axi_wready : out STD_LOGIC;
s_axi_bid : out STD_LOGIC_VECTOR ( 3 downto 0 );
s_axi_bresp : out STD_LOGIC_VECTOR ( 1 downto 0 );
s_axi_bvalid : out STD_LOGIC;
s_axi_bready : in STD_LOGIC;
s_axi_arid : in STD_LOGIC_VECTOR ( 3 downto 0 );
s_axi_araddr : in STD_LOGIC_VECTOR ( 31 downto 0 );
s_axi_arlen : in STD_LOGIC_VECTOR ( 7 downto 0 );
s_axi_arsize : in STD_LOGIC_VECTOR ( 2 downto 0 );
s_axi_arburst : in STD_LOGIC_VECTOR ( 1 downto 0 );
s_axi_arvalid : in STD_LOGIC;
s_axi_arready : out STD_LOGIC;
s_axi_rid : out STD_LOGIC_VECTOR ( 3 downto 0 );
s_axi_rdata : out STD_LOGIC_VECTOR ( 31 downto 0 );
s_axi_rresp : out STD_LOGIC_VECTOR ( 1 downto 0 );
s_axi_rlast : out STD_LOGIC;
s_axi_rvalid : out STD_LOGIC;
s_axi_rready : in STD_LOGIC;
s_axi_injectsbiterr : in STD_LOGIC;
s_axi_injectdbiterr : in STD_LOGIC;
s_axi_sbiterr : out STD_LOGIC;
s_axi_dbiterr : out STD_LOGIC;
s_axi_rdaddrecc : out STD_LOGIC_VECTOR ( 7 downto 0 )
);
attribute C_ADDRA_WIDTH : integer;
attribute C_ADDRA_WIDTH of hop_rom_blk_mem_gen_v8_4_3 : entity is 8;
attribute C_ADDRB_WIDTH : integer;
attribute C_ADDRB_WIDTH of hop_rom_blk_mem_gen_v8_4_3 : entity is 8;
attribute C_ALGORITHM : integer;
attribute C_ALGORITHM of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_AXI_ID_WIDTH : integer;
attribute C_AXI_ID_WIDTH of hop_rom_blk_mem_gen_v8_4_3 : entity is 4;
attribute C_AXI_SLAVE_TYPE : integer;
attribute C_AXI_SLAVE_TYPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_AXI_TYPE : integer;
attribute C_AXI_TYPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_BYTE_SIZE : integer;
attribute C_BYTE_SIZE of hop_rom_blk_mem_gen_v8_4_3 : entity is 9;
attribute C_COMMON_CLK : integer;
attribute C_COMMON_CLK of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_COUNT_18K_BRAM : string;
attribute C_COUNT_18K_BRAM of hop_rom_blk_mem_gen_v8_4_3 : entity is "1";
attribute C_COUNT_36K_BRAM : string;
attribute C_COUNT_36K_BRAM of hop_rom_blk_mem_gen_v8_4_3 : entity is "0";
attribute C_CTRL_ECC_ALGO : string;
attribute C_CTRL_ECC_ALGO of hop_rom_blk_mem_gen_v8_4_3 : entity is "NONE";
attribute C_DEFAULT_DATA : string;
attribute C_DEFAULT_DATA of hop_rom_blk_mem_gen_v8_4_3 : entity is "0";
attribute C_DISABLE_WARN_BHV_COLL : integer;
attribute C_DISABLE_WARN_BHV_COLL of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_DISABLE_WARN_BHV_RANGE : integer;
attribute C_DISABLE_WARN_BHV_RANGE of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_ELABORATION_DIR : string;
attribute C_ELABORATION_DIR of hop_rom_blk_mem_gen_v8_4_3 : entity is "./";
attribute C_ENABLE_32BIT_ADDRESS : integer;
attribute C_ENABLE_32BIT_ADDRESS of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_DEEPSLEEP_PIN : integer;
attribute C_EN_DEEPSLEEP_PIN of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_ECC_PIPE : integer;
attribute C_EN_ECC_PIPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_RDADDRA_CHG : integer;
attribute C_EN_RDADDRA_CHG of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_RDADDRB_CHG : integer;
attribute C_EN_RDADDRB_CHG of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_SAFETY_CKT : integer;
attribute C_EN_SAFETY_CKT of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_SHUTDOWN_PIN : integer;
attribute C_EN_SHUTDOWN_PIN of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EN_SLEEP_PIN : integer;
attribute C_EN_SLEEP_PIN of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_EST_POWER_SUMMARY : string;
attribute C_EST_POWER_SUMMARY of hop_rom_blk_mem_gen_v8_4_3 : entity is "Estimated Power for IP : 3.375199 mW";
attribute C_FAMILY : string;
attribute C_FAMILY of hop_rom_blk_mem_gen_v8_4_3 : entity is "kintex7";
attribute C_HAS_AXI_ID : integer;
attribute C_HAS_AXI_ID of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_ENA : integer;
attribute C_HAS_ENA of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_ENB : integer;
attribute C_HAS_ENB of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_INJECTERR : integer;
attribute C_HAS_INJECTERR of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_MEM_OUTPUT_REGS_A : integer;
attribute C_HAS_MEM_OUTPUT_REGS_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_MEM_OUTPUT_REGS_B : integer;
attribute C_HAS_MEM_OUTPUT_REGS_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_MUX_OUTPUT_REGS_A : integer;
attribute C_HAS_MUX_OUTPUT_REGS_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_MUX_OUTPUT_REGS_B : integer;
attribute C_HAS_MUX_OUTPUT_REGS_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_REGCEA : integer;
attribute C_HAS_REGCEA of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_REGCEB : integer;
attribute C_HAS_REGCEB of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_RSTA : integer;
attribute C_HAS_RSTA of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_RSTB : integer;
attribute C_HAS_RSTB of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_SOFTECC_INPUT_REGS_A : integer;
attribute C_HAS_SOFTECC_INPUT_REGS_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_HAS_SOFTECC_OUTPUT_REGS_B : integer;
attribute C_HAS_SOFTECC_OUTPUT_REGS_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_INITA_VAL : string;
attribute C_INITA_VAL of hop_rom_blk_mem_gen_v8_4_3 : entity is "0";
attribute C_INITB_VAL : string;
attribute C_INITB_VAL of hop_rom_blk_mem_gen_v8_4_3 : entity is "0";
attribute C_INIT_FILE : string;
attribute C_INIT_FILE of hop_rom_blk_mem_gen_v8_4_3 : entity is "hop_rom.mem";
attribute C_INIT_FILE_NAME : string;
attribute C_INIT_FILE_NAME of hop_rom_blk_mem_gen_v8_4_3 : entity is "hop_rom.mif";
attribute C_INTERFACE_TYPE : integer;
attribute C_INTERFACE_TYPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_LOAD_INIT_FILE : integer;
attribute C_LOAD_INIT_FILE of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_MEM_TYPE : integer;
attribute C_MEM_TYPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 3;
attribute C_MUX_PIPELINE_STAGES : integer;
attribute C_MUX_PIPELINE_STAGES of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_PRIM_TYPE : integer;
attribute C_PRIM_TYPE of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_READ_DEPTH_A : integer;
attribute C_READ_DEPTH_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 256;
attribute C_READ_DEPTH_B : integer;
attribute C_READ_DEPTH_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 256;
attribute C_READ_LATENCY_A : integer;
attribute C_READ_LATENCY_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_READ_LATENCY_B : integer;
attribute C_READ_LATENCY_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_READ_WIDTH_A : integer;
attribute C_READ_WIDTH_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 32;
attribute C_READ_WIDTH_B : integer;
attribute C_READ_WIDTH_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 32;
attribute C_RSTRAM_A : integer;
attribute C_RSTRAM_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_RSTRAM_B : integer;
attribute C_RSTRAM_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_RST_PRIORITY_A : string;
attribute C_RST_PRIORITY_A of hop_rom_blk_mem_gen_v8_4_3 : entity is "CE";
attribute C_RST_PRIORITY_B : string;
attribute C_RST_PRIORITY_B of hop_rom_blk_mem_gen_v8_4_3 : entity is "CE";
attribute C_SIM_COLLISION_CHECK : string;
attribute C_SIM_COLLISION_CHECK of hop_rom_blk_mem_gen_v8_4_3 : entity is "ALL";
attribute C_USE_BRAM_BLOCK : integer;
attribute C_USE_BRAM_BLOCK of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_BYTE_WEA : integer;
attribute C_USE_BYTE_WEA of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_BYTE_WEB : integer;
attribute C_USE_BYTE_WEB of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_DEFAULT_DATA : integer;
attribute C_USE_DEFAULT_DATA of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_ECC : integer;
attribute C_USE_ECC of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_SOFTECC : integer;
attribute C_USE_SOFTECC of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_USE_URAM : integer;
attribute C_USE_URAM of hop_rom_blk_mem_gen_v8_4_3 : entity is 0;
attribute C_WEA_WIDTH : integer;
attribute C_WEA_WIDTH of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_WEB_WIDTH : integer;
attribute C_WEB_WIDTH of hop_rom_blk_mem_gen_v8_4_3 : entity is 1;
attribute C_WRITE_DEPTH_A : integer;
attribute C_WRITE_DEPTH_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 256;
attribute C_WRITE_DEPTH_B : integer;
attribute C_WRITE_DEPTH_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 256;
attribute C_WRITE_MODE_A : string;
attribute C_WRITE_MODE_A of hop_rom_blk_mem_gen_v8_4_3 : entity is "WRITE_FIRST";
attribute C_WRITE_MODE_B : string;
attribute C_WRITE_MODE_B of hop_rom_blk_mem_gen_v8_4_3 : entity is "WRITE_FIRST";
attribute C_WRITE_WIDTH_A : integer;
attribute C_WRITE_WIDTH_A of hop_rom_blk_mem_gen_v8_4_3 : entity is 32;
attribute C_WRITE_WIDTH_B : integer;
attribute C_WRITE_WIDTH_B of hop_rom_blk_mem_gen_v8_4_3 : entity is 32;
attribute C_XDEVICEFAMILY : string;
attribute C_XDEVICEFAMILY of hop_rom_blk_mem_gen_v8_4_3 : entity is "kintex7";
attribute ORIG_REF_NAME : string;
attribute ORIG_REF_NAME of hop_rom_blk_mem_gen_v8_4_3 : entity is "blk_mem_gen_v8_4_3";
attribute downgradeipidentifiedwarnings : string;
attribute downgradeipidentifiedwarnings of hop_rom_blk_mem_gen_v8_4_3 : entity is "yes";
end hop_rom_blk_mem_gen_v8_4_3;
architecture STRUCTURE of hop_rom_blk_mem_gen_v8_4_3 is
signal \<const0>\ : STD_LOGIC;
begin
dbiterr <= \<const0>\;
doutb(31) <= \<const0>\;
doutb(30) <= \<const0>\;
doutb(29) <= \<const0>\;
doutb(28) <= \<const0>\;
doutb(27) <= \<const0>\;
doutb(26) <= \<const0>\;
doutb(25) <= \<const0>\;
doutb(24) <= \<const0>\;
doutb(23) <= \<const0>\;
doutb(22) <= \<const0>\;
doutb(21) <= \<const0>\;
doutb(20) <= \<const0>\;
doutb(19) <= \<const0>\;
doutb(18) <= \<const0>\;
doutb(17) <= \<const0>\;
doutb(16) <= \<const0>\;
doutb(15) <= \<const0>\;
doutb(14) <= \<const0>\;
doutb(13) <= \<const0>\;
doutb(12) <= \<const0>\;
doutb(11) <= \<const0>\;
doutb(10) <= \<const0>\;
doutb(9) <= \<const0>\;
doutb(8) <= \<const0>\;
doutb(7) <= \<const0>\;
doutb(6) <= \<const0>\;
doutb(5) <= \<const0>\;
doutb(4) <= \<const0>\;
doutb(3) <= \<const0>\;
doutb(2) <= \<const0>\;
doutb(1) <= \<const0>\;
doutb(0) <= \<const0>\;
rdaddrecc(7) <= \<const0>\;
rdaddrecc(6) <= \<const0>\;
rdaddrecc(5) <= \<const0>\;
rdaddrecc(4) <= \<const0>\;
rdaddrecc(3) <= \<const0>\;
rdaddrecc(2) <= \<const0>\;
rdaddrecc(1) <= \<const0>\;
rdaddrecc(0) <= \<const0>\;
rsta_busy <= \<const0>\;
rstb_busy <= \<const0>\;
s_axi_arready <= \<const0>\;
s_axi_awready <= \<const0>\;
s_axi_bid(3) <= \<const0>\;
s_axi_bid(2) <= \<const0>\;
s_axi_bid(1) <= \<const0>\;
s_axi_bid(0) <= \<const0>\;
s_axi_bresp(1) <= \<const0>\;
s_axi_bresp(0) <= \<const0>\;
s_axi_bvalid <= \<const0>\;
s_axi_dbiterr <= \<const0>\;
s_axi_rdaddrecc(7) <= \<const0>\;
s_axi_rdaddrecc(6) <= \<const0>\;
s_axi_rdaddrecc(5) <= \<const0>\;
s_axi_rdaddrecc(4) <= \<const0>\;
s_axi_rdaddrecc(3) <= \<const0>\;
s_axi_rdaddrecc(2) <= \<const0>\;
s_axi_rdaddrecc(1) <= \<const0>\;
s_axi_rdaddrecc(0) <= \<const0>\;
s_axi_rdata(31) <= \<const0>\;
s_axi_rdata(30) <= \<const0>\;
s_axi_rdata(29) <= \<const0>\;
s_axi_rdata(28) <= \<const0>\;
s_axi_rdata(27) <= \<const0>\;
s_axi_rdata(26) <= \<const0>\;
s_axi_rdata(25) <= \<const0>\;
s_axi_rdata(24) <= \<const0>\;
s_axi_rdata(23) <= \<const0>\;
s_axi_rdata(22) <= \<const0>\;
s_axi_rdata(21) <= \<const0>\;
s_axi_rdata(20) <= \<const0>\;
s_axi_rdata(19) <= \<const0>\;
s_axi_rdata(18) <= \<const0>\;
s_axi_rdata(17) <= \<const0>\;
s_axi_rdata(16) <= \<const0>\;
s_axi_rdata(15) <= \<const0>\;
s_axi_rdata(14) <= \<const0>\;
s_axi_rdata(13) <= \<const0>\;
s_axi_rdata(12) <= \<const0>\;
s_axi_rdata(11) <= \<const0>\;
s_axi_rdata(10) <= \<const0>\;
s_axi_rdata(9) <= \<const0>\;
s_axi_rdata(8) <= \<const0>\;
s_axi_rdata(7) <= \<const0>\;
s_axi_rdata(6) <= \<const0>\;
s_axi_rdata(5) <= \<const0>\;
s_axi_rdata(4) <= \<const0>\;
s_axi_rdata(3) <= \<const0>\;
s_axi_rdata(2) <= \<const0>\;
s_axi_rdata(1) <= \<const0>\;
s_axi_rdata(0) <= \<const0>\;
s_axi_rid(3) <= \<const0>\;
s_axi_rid(2) <= \<const0>\;
s_axi_rid(1) <= \<const0>\;
s_axi_rid(0) <= \<const0>\;
s_axi_rlast <= \<const0>\;
s_axi_rresp(1) <= \<const0>\;
s_axi_rresp(0) <= \<const0>\;
s_axi_rvalid <= \<const0>\;
s_axi_sbiterr <= \<const0>\;
s_axi_wready <= \<const0>\;
sbiterr <= \<const0>\;
GND: unisim.vcomponents.GND
port map (
G => \<const0>\
);
inst_blk_mem_gen: entity work.hop_rom_blk_mem_gen_v8_4_3_synth
port map (
addra(7 downto 0) => addra(7 downto 0),
clka => clka,
douta(31 downto 0) => douta(31 downto 0)
);
end STRUCTURE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity hop_rom is
port (
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 );
douta : out STD_LOGIC_VECTOR ( 31 downto 0 )
);
attribute NotValidForBitStream : boolean;
attribute NotValidForBitStream of hop_rom : entity is true;
attribute CHECK_LICENSE_TYPE : string;
attribute CHECK_LICENSE_TYPE of hop_rom : entity is "hop_rom,blk_mem_gen_v8_4_3,{}";
attribute downgradeipidentifiedwarnings : string;
attribute downgradeipidentifiedwarnings of hop_rom : entity is "yes";
attribute x_core_info : string;
attribute x_core_info of hop_rom : entity is "blk_mem_gen_v8_4_3,Vivado 2019.1.3";
end hop_rom;
architecture STRUCTURE of hop_rom is
signal NLW_U0_dbiterr_UNCONNECTED : STD_LOGIC;
signal NLW_U0_rsta_busy_UNCONNECTED : STD_LOGIC;
signal NLW_U0_rstb_busy_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_arready_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_awready_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_bvalid_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_dbiterr_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_rlast_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_rvalid_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_sbiterr_UNCONNECTED : STD_LOGIC;
signal NLW_U0_s_axi_wready_UNCONNECTED : STD_LOGIC;
signal NLW_U0_sbiterr_UNCONNECTED : STD_LOGIC;
signal NLW_U0_doutb_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 );
signal NLW_U0_rdaddrecc_UNCONNECTED : STD_LOGIC_VECTOR ( 7 downto 0 );
signal NLW_U0_s_axi_bid_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 );
signal NLW_U0_s_axi_bresp_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 );
signal NLW_U0_s_axi_rdaddrecc_UNCONNECTED : STD_LOGIC_VECTOR ( 7 downto 0 );
signal NLW_U0_s_axi_rdata_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 );
signal NLW_U0_s_axi_rid_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 );
signal NLW_U0_s_axi_rresp_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 );
attribute C_ADDRA_WIDTH : integer;
attribute C_ADDRA_WIDTH of U0 : label is 8;
attribute C_ADDRB_WIDTH : integer;
attribute C_ADDRB_WIDTH of U0 : label is 8;
attribute C_ALGORITHM : integer;
attribute C_ALGORITHM of U0 : label is 1;
attribute C_AXI_ID_WIDTH : integer;
attribute C_AXI_ID_WIDTH of U0 : label is 4;
attribute C_AXI_SLAVE_TYPE : integer;
attribute C_AXI_SLAVE_TYPE of U0 : label is 0;
attribute C_AXI_TYPE : integer;
attribute C_AXI_TYPE of U0 : label is 1;
attribute C_BYTE_SIZE : integer;
attribute C_BYTE_SIZE of U0 : label is 9;
attribute C_COMMON_CLK : integer;
attribute C_COMMON_CLK of U0 : label is 0;
attribute C_COUNT_18K_BRAM : string;
attribute C_COUNT_18K_BRAM of U0 : label is "1";
attribute C_COUNT_36K_BRAM : string;
attribute C_COUNT_36K_BRAM of U0 : label is "0";
attribute C_CTRL_ECC_ALGO : string;
attribute C_CTRL_ECC_ALGO of U0 : label is "NONE";
attribute C_DEFAULT_DATA : string;
attribute C_DEFAULT_DATA of U0 : label is "0";
attribute C_DISABLE_WARN_BHV_COLL : integer;
attribute C_DISABLE_WARN_BHV_COLL of U0 : label is 0;
attribute C_DISABLE_WARN_BHV_RANGE : integer;
attribute C_DISABLE_WARN_BHV_RANGE of U0 : label is 0;
attribute C_ELABORATION_DIR : string;
attribute C_ELABORATION_DIR of U0 : label is "./";
attribute C_ENABLE_32BIT_ADDRESS : integer;
attribute C_ENABLE_32BIT_ADDRESS of U0 : label is 0;
attribute C_EN_DEEPSLEEP_PIN : integer;
attribute C_EN_DEEPSLEEP_PIN of U0 : label is 0;
attribute C_EN_ECC_PIPE : integer;
attribute C_EN_ECC_PIPE of U0 : label is 0;
attribute C_EN_RDADDRA_CHG : integer;
attribute C_EN_RDADDRA_CHG of U0 : label is 0;
attribute C_EN_RDADDRB_CHG : integer;
attribute C_EN_RDADDRB_CHG of U0 : label is 0;
attribute C_EN_SAFETY_CKT : integer;
attribute C_EN_SAFETY_CKT of U0 : label is 0;
attribute C_EN_SHUTDOWN_PIN : integer;
attribute C_EN_SHUTDOWN_PIN of U0 : label is 0;
attribute C_EN_SLEEP_PIN : integer;
attribute C_EN_SLEEP_PIN of U0 : label is 0;
attribute C_EST_POWER_SUMMARY : string;
attribute C_EST_POWER_SUMMARY of U0 : label is "Estimated Power for IP : 3.375199 mW";
attribute C_FAMILY : string;
attribute C_FAMILY of U0 : label is "kintex7";
attribute C_HAS_AXI_ID : integer;
attribute C_HAS_AXI_ID of U0 : label is 0;
attribute C_HAS_ENA : integer;
attribute C_HAS_ENA of U0 : label is 0;
attribute C_HAS_ENB : integer;
attribute C_HAS_ENB of U0 : label is 0;
attribute C_HAS_INJECTERR : integer;
attribute C_HAS_INJECTERR of U0 : label is 0;
attribute C_HAS_MEM_OUTPUT_REGS_A : integer;
attribute C_HAS_MEM_OUTPUT_REGS_A of U0 : label is 0;
attribute C_HAS_MEM_OUTPUT_REGS_B : integer;
attribute C_HAS_MEM_OUTPUT_REGS_B of U0 : label is 0;
attribute C_HAS_MUX_OUTPUT_REGS_A : integer;
attribute C_HAS_MUX_OUTPUT_REGS_A of U0 : label is 0;
attribute C_HAS_MUX_OUTPUT_REGS_B : integer;
attribute C_HAS_MUX_OUTPUT_REGS_B of U0 : label is 0;
attribute C_HAS_REGCEA : integer;
attribute C_HAS_REGCEA of U0 : label is 0;
attribute C_HAS_REGCEB : integer;
attribute C_HAS_REGCEB of U0 : label is 0;
attribute C_HAS_RSTA : integer;
attribute C_HAS_RSTA of U0 : label is 0;
attribute C_HAS_RSTB : integer;
attribute C_HAS_RSTB of U0 : label is 0;
attribute C_HAS_SOFTECC_INPUT_REGS_A : integer;
attribute C_HAS_SOFTECC_INPUT_REGS_A of U0 : label is 0;
attribute C_HAS_SOFTECC_OUTPUT_REGS_B : integer;
attribute C_HAS_SOFTECC_OUTPUT_REGS_B of U0 : label is 0;
attribute C_INITA_VAL : string;
attribute C_INITA_VAL of U0 : label is "0";
attribute C_INITB_VAL : string;
attribute C_INITB_VAL of U0 : label is "0";
attribute C_INIT_FILE : string;
attribute C_INIT_FILE of U0 : label is "hop_rom.mem";
attribute C_INIT_FILE_NAME : string;
attribute C_INIT_FILE_NAME of U0 : label is "hop_rom.mif";
attribute C_INTERFACE_TYPE : integer;
attribute C_INTERFACE_TYPE of U0 : label is 0;
attribute C_LOAD_INIT_FILE : integer;
attribute C_LOAD_INIT_FILE of U0 : label is 1;
attribute C_MEM_TYPE : integer;
attribute C_MEM_TYPE of U0 : label is 3;
attribute C_MUX_PIPELINE_STAGES : integer;
attribute C_MUX_PIPELINE_STAGES of U0 : label is 0;
attribute C_PRIM_TYPE : integer;
attribute C_PRIM_TYPE of U0 : label is 1;
attribute C_READ_DEPTH_A : integer;
attribute C_READ_DEPTH_A of U0 : label is 256;
attribute C_READ_DEPTH_B : integer;
attribute C_READ_DEPTH_B of U0 : label is 256;
attribute C_READ_LATENCY_A : integer;
attribute C_READ_LATENCY_A of U0 : label is 1;
attribute C_READ_LATENCY_B : integer;
attribute C_READ_LATENCY_B of U0 : label is 1;
attribute C_READ_WIDTH_A : integer;
attribute C_READ_WIDTH_A of U0 : label is 32;
attribute C_READ_WIDTH_B : integer;
attribute C_READ_WIDTH_B of U0 : label is 32;
attribute C_RSTRAM_A : integer;
attribute C_RSTRAM_A of U0 : label is 0;
attribute C_RSTRAM_B : integer;
attribute C_RSTRAM_B of U0 : label is 0;
attribute C_RST_PRIORITY_A : string;
attribute C_RST_PRIORITY_A of U0 : label is "CE";
attribute C_RST_PRIORITY_B : string;
attribute C_RST_PRIORITY_B of U0 : label is "CE";
attribute C_SIM_COLLISION_CHECK : string;
attribute C_SIM_COLLISION_CHECK of U0 : label is "ALL";
attribute C_USE_BRAM_BLOCK : integer;
attribute C_USE_BRAM_BLOCK of U0 : label is 0;
attribute C_USE_BYTE_WEA : integer;
attribute C_USE_BYTE_WEA of U0 : label is 0;
attribute C_USE_BYTE_WEB : integer;
attribute C_USE_BYTE_WEB of U0 : label is 0;
attribute C_USE_DEFAULT_DATA : integer;
attribute C_USE_DEFAULT_DATA of U0 : label is 0;
attribute C_USE_ECC : integer;
attribute C_USE_ECC of U0 : label is 0;
attribute C_USE_SOFTECC : integer;
attribute C_USE_SOFTECC of U0 : label is 0;
attribute C_USE_URAM : integer;
attribute C_USE_URAM of U0 : label is 0;
attribute C_WEA_WIDTH : integer;
attribute C_WEA_WIDTH of U0 : label is 1;
attribute C_WEB_WIDTH : integer;
attribute C_WEB_WIDTH of U0 : label is 1;
attribute C_WRITE_DEPTH_A : integer;
attribute C_WRITE_DEPTH_A of U0 : label is 256;
attribute C_WRITE_DEPTH_B : integer;
attribute C_WRITE_DEPTH_B of U0 : label is 256;
attribute C_WRITE_MODE_A : string;
attribute C_WRITE_MODE_A of U0 : label is "WRITE_FIRST";
attribute C_WRITE_MODE_B : string;
attribute C_WRITE_MODE_B of U0 : label is "WRITE_FIRST";
attribute C_WRITE_WIDTH_A : integer;
attribute C_WRITE_WIDTH_A of U0 : label is 32;
attribute C_WRITE_WIDTH_B : integer;
attribute C_WRITE_WIDTH_B of U0 : label is 32;
attribute C_XDEVICEFAMILY : string;
attribute C_XDEVICEFAMILY of U0 : label is "kintex7";
attribute downgradeipidentifiedwarnings of U0 : label is "yes";
attribute x_interface_info : string;
attribute x_interface_info of clka : signal is "xilinx.com:interface:bram:1.0 BRAM_PORTA CLK";
attribute x_interface_parameter : string;
attribute x_interface_parameter of clka : signal is "XIL_INTERFACENAME BRAM_PORTA, MEM_SIZE 8192, MEM_WIDTH 32, MEM_ECC NONE, MASTER_TYPE OTHER, READ_LATENCY 1";
attribute x_interface_info of addra : signal is "xilinx.com:interface:bram:1.0 BRAM_PORTA ADDR";
attribute x_interface_info of douta : signal is "xilinx.com:interface:bram:1.0 BRAM_PORTA DOUT";
begin
U0: entity work.hop_rom_blk_mem_gen_v8_4_3
port map (
addra(7 downto 0) => addra(7 downto 0),
addrb(7 downto 0) => B"00000000",
clka => clka,
clkb => '0',
dbiterr => NLW_U0_dbiterr_UNCONNECTED,
deepsleep => '0',
dina(31 downto 0) => B"00000000000000000000000000000000",
dinb(31 downto 0) => B"00000000000000000000000000000000",
douta(31 downto 0) => douta(31 downto 0),
doutb(31 downto 0) => NLW_U0_doutb_UNCONNECTED(31 downto 0),
eccpipece => '0',
ena => '0',
enb => '0',
injectdbiterr => '0',
injectsbiterr => '0',
rdaddrecc(7 downto 0) => NLW_U0_rdaddrecc_UNCONNECTED(7 downto 0),
regcea => '0',
regceb => '0',
rsta => '0',
rsta_busy => NLW_U0_rsta_busy_UNCONNECTED,
rstb => '0',
rstb_busy => NLW_U0_rstb_busy_UNCONNECTED,
s_aclk => '0',
s_aresetn => '0',
s_axi_araddr(31 downto 0) => B"00000000000000000000000000000000",
s_axi_arburst(1 downto 0) => B"00",
s_axi_arid(3 downto 0) => B"0000",
s_axi_arlen(7 downto 0) => B"00000000",
s_axi_arready => NLW_U0_s_axi_arready_UNCONNECTED,
s_axi_arsize(2 downto 0) => B"000",
s_axi_arvalid => '0',
s_axi_awaddr(31 downto 0) => B"00000000000000000000000000000000",
s_axi_awburst(1 downto 0) => B"00",
s_axi_awid(3 downto 0) => B"0000",
s_axi_awlen(7 downto 0) => B"00000000",
s_axi_awready => NLW_U0_s_axi_awready_UNCONNECTED,
s_axi_awsize(2 downto 0) => B"000",
s_axi_awvalid => '0',
s_axi_bid(3 downto 0) => NLW_U0_s_axi_bid_UNCONNECTED(3 downto 0),
s_axi_bready => '0',
s_axi_bresp(1 downto 0) => NLW_U0_s_axi_bresp_UNCONNECTED(1 downto 0),
s_axi_bvalid => NLW_U0_s_axi_bvalid_UNCONNECTED,
s_axi_dbiterr => NLW_U0_s_axi_dbiterr_UNCONNECTED,
s_axi_injectdbiterr => '0',
s_axi_injectsbiterr => '0',
s_axi_rdaddrecc(7 downto 0) => NLW_U0_s_axi_rdaddrecc_UNCONNECTED(7 downto 0),
s_axi_rdata(31 downto 0) => NLW_U0_s_axi_rdata_UNCONNECTED(31 downto 0),
s_axi_rid(3 downto 0) => NLW_U0_s_axi_rid_UNCONNECTED(3 downto 0),
s_axi_rlast => NLW_U0_s_axi_rlast_UNCONNECTED,
s_axi_rready => '0',
s_axi_rresp(1 downto 0) => NLW_U0_s_axi_rresp_UNCONNECTED(1 downto 0),
s_axi_rvalid => NLW_U0_s_axi_rvalid_UNCONNECTED,
s_axi_sbiterr => NLW_U0_s_axi_sbiterr_UNCONNECTED,
s_axi_wdata(31 downto 0) => B"00000000000000000000000000000000",
s_axi_wlast => '0',
s_axi_wready => NLW_U0_s_axi_wready_UNCONNECTED,
s_axi_wstrb(0) => '0',
s_axi_wvalid => '0',
sbiterr => NLW_U0_sbiterr_UNCONNECTED,
shutdown => '0',
sleep => '0',
wea(0) => '0',
web(0) => '0'
);
end STRUCTURE;
@@ -0,0 +1,22 @@
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
// Date : Sat Mar 18 23:15:57 2023
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
// Command : write_verilog -force -mode synth_stub
// D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hop_rom_synth_1/hop_rom_stub.v
// Design : hop_rom
// Purpose : Stub declaration of top-level module interface
// Device : xc7k410tffg900-2
// --------------------------------------------------------------------------------
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
(* x_core_info = "blk_mem_gen_v8_4_3,Vivado 2019.1.3" *)
module hop_rom(clka, addra, douta)
/* synthesis syn_black_box black_box_pad_pin="clka,addra[7:0],douta[31:0]" */;
input clka;
input [7:0]addra;
output [31:0]douta;
endmodule
@@ -0,0 +1,32 @@
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-- --------------------------------------------------------------------------------
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
-- Date : Sat Mar 18 23:15:57 2023
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
-- Command : write_vhdl -force -mode synth_stub
-- D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hop_rom_synth_1/hop_rom_stub.vhdl
-- Design : hop_rom
-- Purpose : Stub declaration of top-level module interface
-- Device : xc7k410tffg900-2
-- --------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity hop_rom is
Port (
clka : in STD_LOGIC;
addra : in STD_LOGIC_VECTOR ( 7 downto 0 );
douta : out STD_LOGIC_VECTOR ( 31 downto 0 )
);
end hop_rom;
architecture stub of hop_rom is
attribute syn_black_box : boolean;
attribute black_box_pad_pin : string;
attribute syn_black_box of stub : architecture is true;
attribute black_box_pad_pin of stub : architecture is "clka,addra[7:0],douta[31:0]";
attribute x_core_info : string;
attribute x_core_info of stub : architecture is "blk_mem_gen_v8_4_3,Vivado 2019.1.3";
begin
end;
@@ -0,0 +1,211 @@
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of Xilinx, Inc. and is protected under U.S. and
// international copyright and other intellectual property
// laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// Xilinx, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) Xilinx shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or Xilinx had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// Xilinx products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of Xilinx products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
//
// DO NOT MODIFY THIS FILE.
// IP VLNV: xilinx.com:ip:blk_mem_gen:8.4
// IP Revision: 3
`timescale 1ns/1ps
(* DowngradeIPIdentifiedWarnings = "yes" *)
module hop_rom (
clka,
addra,
douta
);
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA CLK" *)
input wire clka;
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA ADDR" *)
input wire [7 : 0] addra;
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME BRAM_PORTA, MEM_SIZE 8192, MEM_WIDTH 32, MEM_ECC NONE, MASTER_TYPE OTHER, READ_LATENCY 1" *)
(* X_INTERFACE_INFO = "xilinx.com:interface:bram:1.0 BRAM_PORTA DOUT" *)
output wire [31 : 0] douta;
blk_mem_gen_v8_4_3 #(
.C_FAMILY("kintex7"),
.C_XDEVICEFAMILY("kintex7"),
.C_ELABORATION_DIR("./"),
.C_INTERFACE_TYPE(0),
.C_AXI_TYPE(1),
.C_AXI_SLAVE_TYPE(0),
.C_USE_BRAM_BLOCK(0),
.C_ENABLE_32BIT_ADDRESS(0),
.C_CTRL_ECC_ALGO("NONE"),
.C_HAS_AXI_ID(0),
.C_AXI_ID_WIDTH(4),
.C_MEM_TYPE(3),
.C_BYTE_SIZE(9),
.C_ALGORITHM(1),
.C_PRIM_TYPE(1),
.C_LOAD_INIT_FILE(1),
.C_INIT_FILE_NAME("hop_rom.mif"),
.C_INIT_FILE("hop_rom.mem"),
.C_USE_DEFAULT_DATA(0),
.C_DEFAULT_DATA("0"),
.C_HAS_RSTA(0),
.C_RST_PRIORITY_A("CE"),
.C_RSTRAM_A(0),
.C_INITA_VAL("0"),
.C_HAS_ENA(0),
.C_HAS_REGCEA(0),
.C_USE_BYTE_WEA(0),
.C_WEA_WIDTH(1),
.C_WRITE_MODE_A("WRITE_FIRST"),
.C_WRITE_WIDTH_A(32),
.C_READ_WIDTH_A(32),
.C_WRITE_DEPTH_A(256),
.C_READ_DEPTH_A(256),
.C_ADDRA_WIDTH(8),
.C_HAS_RSTB(0),
.C_RST_PRIORITY_B("CE"),
.C_RSTRAM_B(0),
.C_INITB_VAL("0"),
.C_HAS_ENB(0),
.C_HAS_REGCEB(0),
.C_USE_BYTE_WEB(0),
.C_WEB_WIDTH(1),
.C_WRITE_MODE_B("WRITE_FIRST"),
.C_WRITE_WIDTH_B(32),
.C_READ_WIDTH_B(32),
.C_WRITE_DEPTH_B(256),
.C_READ_DEPTH_B(256),
.C_ADDRB_WIDTH(8),
.C_HAS_MEM_OUTPUT_REGS_A(0),
.C_HAS_MEM_OUTPUT_REGS_B(0),
.C_HAS_MUX_OUTPUT_REGS_A(0),
.C_HAS_MUX_OUTPUT_REGS_B(0),
.C_MUX_PIPELINE_STAGES(0),
.C_HAS_SOFTECC_INPUT_REGS_A(0),
.C_HAS_SOFTECC_OUTPUT_REGS_B(0),
.C_USE_SOFTECC(0),
.C_USE_ECC(0),
.C_EN_ECC_PIPE(0),
.C_READ_LATENCY_A(1),
.C_READ_LATENCY_B(1),
.C_HAS_INJECTERR(0),
.C_SIM_COLLISION_CHECK("ALL"),
.C_COMMON_CLK(0),
.C_DISABLE_WARN_BHV_COLL(0),
.C_EN_SLEEP_PIN(0),
.C_USE_URAM(0),
.C_EN_RDADDRA_CHG(0),
.C_EN_RDADDRB_CHG(0),
.C_EN_DEEPSLEEP_PIN(0),
.C_EN_SHUTDOWN_PIN(0),
.C_EN_SAFETY_CKT(0),
.C_DISABLE_WARN_BHV_RANGE(0),
.C_COUNT_36K_BRAM("0"),
.C_COUNT_18K_BRAM("1"),
.C_EST_POWER_SUMMARY("Estimated Power for IP : 3.375199 mW")
) inst (
.clka(clka),
.rsta(1'D0),
.ena(1'D0),
.regcea(1'D0),
.wea(1'B0),
.addra(addra),
.dina(32'B0),
.douta(douta),
.clkb(1'D0),
.rstb(1'D0),
.enb(1'D0),
.regceb(1'D0),
.web(1'B0),
.addrb(8'B0),
.dinb(32'B0),
.doutb(),
.injectsbiterr(1'D0),
.injectdbiterr(1'D0),
.eccpipece(1'D0),
.sbiterr(),
.dbiterr(),
.rdaddrecc(),
.sleep(1'D0),
.deepsleep(1'D0),
.shutdown(1'D0),
.rsta_busy(),
.rstb_busy(),
.s_aclk(1'H0),
.s_aresetn(1'D0),
.s_axi_awid(4'B0),
.s_axi_awaddr(32'B0),
.s_axi_awlen(8'B0),
.s_axi_awsize(3'B0),
.s_axi_awburst(2'B0),
.s_axi_awvalid(1'D0),
.s_axi_awready(),
.s_axi_wdata(32'B0),
.s_axi_wstrb(1'B0),
.s_axi_wlast(1'D0),
.s_axi_wvalid(1'D0),
.s_axi_wready(),
.s_axi_bid(),
.s_axi_bresp(),
.s_axi_bvalid(),
.s_axi_bready(1'D0),
.s_axi_arid(4'B0),
.s_axi_araddr(32'B0),
.s_axi_arlen(8'B0),
.s_axi_arsize(3'B0),
.s_axi_arburst(2'B0),
.s_axi_arvalid(1'D0),
.s_axi_arready(),
.s_axi_rid(),
.s_axi_rdata(),
.s_axi_rresp(),
.s_axi_rlast(),
.s_axi_rvalid(),
.s_axi_rready(1'D0),
.s_axi_injectsbiterr(1'D0),
.s_axi_injectdbiterr(1'D0),
.s_axi_sbiterr(),
.s_axi_dbiterr(),
.s_axi_rdaddrecc()
);
endmodule
@@ -0,0 +1,261 @@
--------------------------------------------------------------------------------
-- (c) Copyright 2011 - 2013 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--------------------------------------------------------------------------------
-- Description:
-- This is an example testbench for the FIR Compiler IP core.
-- The testbench has been generated by Vivado to accompany the IP core
-- instance you have generated.
--
-- This testbench is for demonstration purposes only. See note below for
-- instructions on how to use it with your core.
--
-- See the FIR Compiler product guide for further information
-- about this core.
--
--------------------------------------------------------------------------------
-- Using this testbench
--
-- This testbench instantiates your generated FIR Compiler core
-- instance named "hrc_64_12_025".
--
-- Use Vivado's Run Simulation flow to run this testbench. See the Vivado
-- documentation for details.
--------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity tb_hrc_64_12_025 is
end tb_hrc_64_12_025;
architecture tb of tb_hrc_64_12_025 is
-----------------------------------------------------------------------
-- Timing constants
-----------------------------------------------------------------------
constant CLOCK_PERIOD : time := 100 ns;
constant T_HOLD : time := 10 ns;
constant T_STROBE : time := CLOCK_PERIOD - (1 ns);
-----------------------------------------------------------------------
-- DUT signals
-----------------------------------------------------------------------
-- General signals
signal aclk : std_logic := '0'; -- the master clock
-- Data slave channel signals
signal s_axis_data_tvalid : std_logic := '0'; -- payload is valid
signal s_axis_data_tready : std_logic := '1'; -- slave is ready
signal s_axis_data_tdata : std_logic_vector(7 downto 0) := (others => '0'); -- data payload
-- Data master channel signals
signal m_axis_data_tvalid : std_logic := '0'; -- payload is valid
signal m_axis_data_tdata : std_logic_vector(23 downto 0) := (others => '0'); -- data payload
-----------------------------------------------------------------------
-- Aliases for AXI channel TDATA and TUSER fields
-- These are a convenience for viewing data in a simulator waveform viewer.
-- If using ModelSim or Questa, add "-voptargs=+acc=n" to the vsim command
-- to prevent the simulator optimizing away these signals.
-----------------------------------------------------------------------
-- Data slave channel alias signals
signal s_axis_data_tdata_data : std_logic_vector(1 downto 0) := (others => '0');
-- Data master channel alias signals
signal m_axis_data_tdata_data : std_logic_vector(17 downto 0) := (others => '0');
begin
-----------------------------------------------------------------------
-- Instantiate the DUT
-----------------------------------------------------------------------
dut : entity work.hrc_64_12_025
port map (
aclk => aclk,
s_axis_data_tvalid => s_axis_data_tvalid,
s_axis_data_tready => s_axis_data_tready,
s_axis_data_tdata => s_axis_data_tdata,
m_axis_data_tvalid => m_axis_data_tvalid,
m_axis_data_tdata => m_axis_data_tdata
);
-----------------------------------------------------------------------
-- Generate clock
-----------------------------------------------------------------------
clock_gen : process
begin
aclk <= '0';
wait for CLOCK_PERIOD;
loop
aclk <= '0';
wait for CLOCK_PERIOD/2;
aclk <= '1';
wait for CLOCK_PERIOD/2;
end loop;
end process clock_gen;
-----------------------------------------------------------------------
-- Generate inputs
-----------------------------------------------------------------------
stimuli : process
-- Procedure to drive a number of input samples with specific data
-- data is the data value to drive on the tdata signal
-- samples is the number of zero-data input samples to drive
procedure drive_data ( data : std_logic_vector(7 downto 0);
samples : natural := 1 ) is
variable ip_count : integer := 0;
begin
ip_count := 0;
loop
s_axis_data_tvalid <= '1';
s_axis_data_tdata <= data;
loop
wait until rising_edge(aclk);
exit when s_axis_data_tready = '1';
end loop;
ip_count := ip_count + 1;
wait for T_HOLD;
-- Input rate is 1 input each 64 clock cycles: drive valid inputs at this rate
s_axis_data_tvalid <= '0';
wait for CLOCK_PERIOD * 63;
exit when ip_count >= samples;
end loop;
end procedure drive_data;
-- Procedure to drive a number of zero-data input samples
-- samples is the number of zero-data input samples to drive
procedure drive_zeros ( samples : natural := 1 ) is
begin
drive_data((others => '0'), samples);
end procedure drive_zeros;
-- Procedure to drive an impulse and let the impulse response emerge on the data master channel
-- samples is the number of input samples to drive; default is enough for impulse response output to emerge
procedure drive_impulse ( samples : natural := 837 ) is
variable impulse : std_logic_vector(7 downto 0);
begin
impulse := (others => '0'); -- initialize unused bits to zero
impulse(1 downto 0) := "01";
drive_data(impulse);
if samples > 1 then
drive_zeros(samples-1);
end if;
end procedure drive_impulse;
begin
-- Drive inputs T_HOLD time after rising edge of clock
wait until rising_edge(aclk);
wait for T_HOLD;
-- Drive a single impulse and let the impulse response emerge
drive_impulse;
-- Drive another impulse, during which demonstrate use and effect of AXI handshaking signals
drive_impulse(2); -- start of impulse; data is now zero
s_axis_data_tvalid <= '0';
wait for CLOCK_PERIOD * 320; -- provide no data for 5 input samples worth
drive_zeros(2); -- 2 normal input samples
s_axis_data_tvalid <= '1';
wait for CLOCK_PERIOD * 320; -- provide data as fast as the core can accept it for 5 input samples worth
drive_zeros(828); -- back to normal operation
-- End of test
report "Not a real failure. Simulation finished successfully. Test completed successfully" severity failure;
wait;
end process stimuli;
-----------------------------------------------------------------------
-- Check outputs
-----------------------------------------------------------------------
check_outputs : process
variable check_ok : boolean := true;
begin
-- Check outputs T_STROBE time after rising edge of clock
wait until rising_edge(aclk);
wait for T_STROBE;
-- Do not check the output payload values, as this requires the behavioral model
-- which would make this demonstration testbench unwieldy.
-- Instead, check the protocol of the master DATA channel:
-- check that the payload is valid (not X) when TVALID is high
if m_axis_data_tvalid = '1' then
if is_x(m_axis_data_tdata) then
report "ERROR: m_axis_data_tdata is invalid when m_axis_data_tvalid is high" severity error;
check_ok := false;
end if;
end if;
assert check_ok
report "ERROR: terminating test with failures." severity failure;
end process check_outputs;
-----------------------------------------------------------------------
-- Assign TDATA / TUSER fields to aliases, for easy simulator waveform viewing
-----------------------------------------------------------------------
-- Data slave channel alias signals
s_axis_data_tdata_data <= s_axis_data_tdata(1 downto 0);
-- Data master channel alias signals: update these only when they are valid
m_axis_data_tdata_data <= m_axis_data_tdata(17 downto 0) when m_axis_data_tvalid = '1';
end tb;
@@ -0,0 +1,70 @@
// (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
//
// This file contains confidential and proprietary information
// of Xilinx, Inc. and is protected under U.S. and
// international copyright and other intellectual property
// laws.
//
// DISCLAIMER
// This disclaimer is not a license and does not grant any
// rights to the materials distributed herewith. Except as
// otherwise provided in a valid license issued to you by
// Xilinx, and to the maximum extent permitted by applicable
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
// (2) Xilinx shall not be liable (whether in contract or tort,
// including negligence, or under any other theory of
// liability) for any loss or damage of any kind or nature
// related to, arising under or in connection with these
// materials, including for any direct, or any indirect,
// special, incidental, or consequential loss or damage
// (including loss of data, profits, goodwill, or any type of
// loss or damage suffered as a result of any action brought
// by a third party) even if such damage or loss was
// reasonably foreseeable or Xilinx had been advised of the
// possibility of the same.
//
// CRITICAL APPLICATIONS
// Xilinx products are not designed or intended to be fail-
// safe, or for use in any application requiring fail-safe
// performance, such as life-support or safety devices or
// systems, Class III medical devices, nuclear facilities,
// applications related to the deployment of airbags, or any
// other applications that could lead to death, personal
// injury, or severe property or environmental damage
// (individually and collectively, "Critical
// Applications"). Customer assumes the sole risk and
// liability of any use of Xilinx products in Critical
// Applications, subject only to applicable laws and
// regulations governing limitations on product liability.
//
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
// PART OF THIS FILE AT ALL TIMES.
//
// DO NOT MODIFY THIS FILE.
// IP VLNV: xilinx.com:ip:fir_compiler:7.2
// IP Revision: 12
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
hrc_64_12_025 your_instance_name (
.aclk(aclk), // input wire aclk
.s_axis_data_tvalid(s_axis_data_tvalid), // input wire s_axis_data_tvalid
.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready
.s_axis_data_tdata(s_axis_data_tdata), // input wire [7 : 0] s_axis_data_tdata
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata(m_axis_data_tdata) // output wire [23 : 0] m_axis_data_tdata
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file hrc_64_12_025.v when simulating
// the core, hrc_64_12_025. When compiling the wrapper file, be sure to
// reference the Verilog simulation library.
@@ -0,0 +1,85 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
-- IP Revision: 12
-- The following code must appear in the VHDL architecture header.
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
COMPONENT hrc_64_12_025
PORT (
aclk : IN STD_LOGIC;
s_axis_data_tvalid : IN STD_LOGIC;
s_axis_data_tready : OUT STD_LOGIC;
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(23 DOWNTO 0)
);
END COMPONENT;
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
-- The following code must appear in the VHDL architecture
-- body. Substitute your own instance name and net names.
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
your_instance_name : hrc_64_12_025
PORT MAP (
aclk => aclk,
s_axis_data_tvalid => s_axis_data_tvalid,
s_axis_data_tready => s_axis_data_tready,
s_axis_data_tdata => s_axis_data_tdata,
m_axis_data_tvalid => m_axis_data_tvalid,
m_axis_data_tdata => m_axis_data_tdata
);
-- INST_TAG_END ------ End INSTANTIATION Template ---------
-- You must compile the wrapper file hrc_64_12_025.vhd when simulating
-- the core, hrc_64_12_025. When compiling the wrapper file, be sure to
-- reference the VHDL simulation library.
@@ -0,0 +1,26 @@
// Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
// --------------------------------------------------------------------------------
// Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
// Date : Sat Mar 18 23:15:42 2023
// Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
// Command : write_verilog -force -mode synth_stub
// D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hrc_64_12_025_synth_1/hrc_64_12_025_stub.v
// Design : hrc_64_12_025
// Purpose : Stub declaration of top-level module interface
// Device : xc7k410tffg900-2
// --------------------------------------------------------------------------------
// This empty module with port declaration file causes synthesis tools to infer a black box for IP.
// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion.
// Please paste the declaration into a Verilog source file or add the file as an additional source.
(* x_core_info = "fir_compiler_v7_2_12,Vivado 2019.1.3" *)
module hrc_64_12_025(aclk, s_axis_data_tvalid, s_axis_data_tready,
s_axis_data_tdata, m_axis_data_tvalid, m_axis_data_tdata)
/* synthesis syn_black_box black_box_pad_pin="aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[23:0]" */;
input aclk;
input s_axis_data_tvalid;
output s_axis_data_tready;
input [7:0]s_axis_data_tdata;
output m_axis_data_tvalid;
output [23:0]m_axis_data_tdata;
endmodule
@@ -0,0 +1,35 @@
-- Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-- --------------------------------------------------------------------------------
-- Tool Version: Vivado v.2019.1.3 (win64) Build 2644227 Wed Sep 4 09:45:24 MDT 2019
-- Date : Sat Mar 18 23:15:42 2023
-- Host : JOSH-ASUS-Z690 running 64-bit major release (build 9200)
-- Command : write_vhdl -force -mode synth_stub
-- D:/vivado-git/modules/xc7k410tffg900-2/tx_qpsk/ip/managed_ip_project/managed_ip_project.runs/hrc_64_12_025_synth_1/hrc_64_12_025_stub.vhdl
-- Design : hrc_64_12_025
-- Purpose : Stub declaration of top-level module interface
-- Device : xc7k410tffg900-2
-- --------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity hrc_64_12_025 is
Port (
aclk : in STD_LOGIC;
s_axis_data_tvalid : in STD_LOGIC;
s_axis_data_tready : out STD_LOGIC;
s_axis_data_tdata : in STD_LOGIC_VECTOR ( 7 downto 0 );
m_axis_data_tvalid : out STD_LOGIC;
m_axis_data_tdata : out STD_LOGIC_VECTOR ( 23 downto 0 )
);
end hrc_64_12_025;
architecture stub of hrc_64_12_025 is
attribute syn_black_box : boolean;
attribute black_box_pad_pin : string;
attribute syn_black_box of stub : architecture is true;
attribute black_box_pad_pin of stub : architecture is "aclk,s_axis_data_tvalid,s_axis_data_tready,s_axis_data_tdata[7:0],m_axis_data_tvalid,m_axis_data_tdata[23:0]";
attribute x_core_info : string;
attribute x_core_info of stub : architecture is "fir_compiler_v7_2_12,Vivado 2019.1.3";
begin
end;
@@ -0,0 +1,281 @@
-- (c) Copyright 1995-2023 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
-- DO NOT MODIFY THIS FILE.
-- IP VLNV: xilinx.com:ip:fir_compiler:7.2
-- IP Revision: 12
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY fir_compiler_v7_2_12;
USE fir_compiler_v7_2_12.fir_compiler_v7_2_12;
ENTITY hrc_64_12_025 IS
PORT (
aclk : IN STD_LOGIC;
s_axis_data_tvalid : IN STD_LOGIC;
s_axis_data_tready : OUT STD_LOGIC;
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(23 DOWNTO 0)
);
END hrc_64_12_025;
ARCHITECTURE hrc_64_12_025_arch OF hrc_64_12_025 IS
ATTRIBUTE DowngradeIPIdentifiedWarnings : STRING;
ATTRIBUTE DowngradeIPIdentifiedWarnings OF hrc_64_12_025_arch: ARCHITECTURE IS "yes";
COMPONENT fir_compiler_v7_2_12 IS
GENERIC (
C_XDEVICEFAMILY : STRING;
C_ELABORATION_DIR : STRING;
C_COMPONENT_NAME : STRING;
C_COEF_FILE : STRING;
C_COEF_FILE_LINES : INTEGER;
C_FILTER_TYPE : INTEGER;
C_INTERP_RATE : INTEGER;
C_DECIM_RATE : INTEGER;
C_ZERO_PACKING_FACTOR : INTEGER;
C_SYMMETRY : INTEGER;
C_NUM_FILTS : INTEGER;
C_NUM_TAPS : INTEGER;
C_NUM_CHANNELS : INTEGER;
C_CHANNEL_PATTERN : STRING;
C_ROUND_MODE : INTEGER;
C_COEF_RELOAD : INTEGER;
C_NUM_RELOAD_SLOTS : INTEGER;
C_COL_MODE : INTEGER;
C_COL_PIPE_LEN : INTEGER;
C_COL_CONFIG : STRING;
C_OPTIMIZATION : INTEGER;
C_DATA_PATH_WIDTHS : STRING;
C_DATA_IP_PATH_WIDTHS : STRING;
C_DATA_PX_PATH_WIDTHS : STRING;
C_DATA_WIDTH : INTEGER;
C_COEF_PATH_WIDTHS : STRING;
C_COEF_WIDTH : INTEGER;
C_DATA_PATH_SRC : STRING;
C_COEF_PATH_SRC : STRING;
C_PX_PATH_SRC : STRING;
C_DATA_PATH_SIGN : STRING;
C_COEF_PATH_SIGN : STRING;
C_ACCUM_PATH_WIDTHS : STRING;
C_OUTPUT_WIDTH : INTEGER;
C_OUTPUT_PATH_WIDTHS : STRING;
C_ACCUM_OP_PATH_WIDTHS : STRING;
C_EXT_MULT_CNFG : STRING;
C_DATA_PATH_PSAMP_SRC : STRING;
C_OP_PATH_PSAMP_SRC : STRING;
C_NUM_MADDS : INTEGER;
C_OPT_MADDS : STRING;
C_OVERSAMPLING_RATE : INTEGER;
C_INPUT_RATE : INTEGER;
C_OUTPUT_RATE : INTEGER;
C_DATA_MEMTYPE : INTEGER;
C_COEF_MEMTYPE : INTEGER;
C_IPBUFF_MEMTYPE : INTEGER;
C_OPBUFF_MEMTYPE : INTEGER;
C_DATAPATH_MEMTYPE : INTEGER;
C_MEM_ARRANGEMENT : INTEGER;
C_DATA_MEM_PACKING : INTEGER;
C_COEF_MEM_PACKING : INTEGER;
C_FILTS_PACKED : INTEGER;
C_LATENCY : INTEGER;
C_HAS_ARESETn : INTEGER;
C_HAS_ACLKEN : INTEGER;
C_DATA_HAS_TLAST : INTEGER;
C_S_DATA_HAS_FIFO : INTEGER;
C_S_DATA_HAS_TUSER : INTEGER;
C_S_DATA_TDATA_WIDTH : INTEGER;
C_S_DATA_TUSER_WIDTH : INTEGER;
C_M_DATA_HAS_TREADY : INTEGER;
C_M_DATA_HAS_TUSER : INTEGER;
C_M_DATA_TDATA_WIDTH : INTEGER;
C_M_DATA_TUSER_WIDTH : INTEGER;
C_HAS_CONFIG_CHANNEL : INTEGER;
C_CONFIG_SYNC_MODE : INTEGER;
C_CONFIG_PACKET_SIZE : INTEGER;
C_CONFIG_TDATA_WIDTH : INTEGER;
C_RELOAD_TDATA_WIDTH : INTEGER
);
PORT (
aresetn : IN STD_LOGIC;
aclk : IN STD_LOGIC;
aclken : IN STD_LOGIC;
s_axis_data_tvalid : IN STD_LOGIC;
s_axis_data_tready : OUT STD_LOGIC;
s_axis_data_tlast : IN STD_LOGIC;
s_axis_data_tuser : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_data_tdata : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
s_axis_config_tvalid : IN STD_LOGIC;
s_axis_config_tready : OUT STD_LOGIC;
s_axis_config_tlast : IN STD_LOGIC;
s_axis_config_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
s_axis_reload_tvalid : IN STD_LOGIC;
s_axis_reload_tready : OUT STD_LOGIC;
s_axis_reload_tlast : IN STD_LOGIC;
s_axis_reload_tdata : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
m_axis_data_tvalid : OUT STD_LOGIC;
m_axis_data_tready : IN STD_LOGIC;
m_axis_data_tlast : OUT STD_LOGIC;
m_axis_data_tuser : OUT STD_LOGIC_VECTOR(0 DOWNTO 0);
m_axis_data_tdata : OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
event_s_data_tlast_missing : OUT STD_LOGIC;
event_s_data_tlast_unexpected : OUT STD_LOGIC;
event_s_data_chanid_incorrect : OUT STD_LOGIC;
event_s_config_tlast_missing : OUT STD_LOGIC;
event_s_config_tlast_unexpected : OUT STD_LOGIC;
event_s_reload_tlast_missing : OUT STD_LOGIC;
event_s_reload_tlast_unexpected : OUT STD_LOGIC
);
END COMPONENT fir_compiler_v7_2_12;
ATTRIBUTE X_INTERFACE_INFO : STRING;
ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TDATA";
ATTRIBUTE X_INTERFACE_PARAMETER OF m_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME M_AXIS_DATA, TDATA_NUM_BYTES 3, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 0, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF m_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 M_AXIS_DATA TVALID";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tdata: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TDATA";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tready: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TREADY";
ATTRIBUTE X_INTERFACE_PARAMETER OF s_axis_data_tvalid: SIGNAL IS "XIL_INTERFACENAME S_AXIS_DATA, TDATA_NUM_BYTES 1, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 0, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 0, HAS_TLAST 0, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF s_axis_data_tvalid: SIGNAL IS "xilinx.com:interface:axis:1.0 S_AXIS_DATA TVALID";
ATTRIBUTE X_INTERFACE_PARAMETER OF aclk: SIGNAL IS "XIL_INTERFACENAME aclk_intf, ASSOCIATED_BUSIF S_AXIS_CONFIG:M_AXIS_DATA:S_AXIS_DATA:S_AXIS_RELOAD, ASSOCIATED_RESET aresetn, ASSOCIATED_CLKEN aclken, FREQ_HZ 100000000, PHASE 0.000, INSERT_VIP 0";
ATTRIBUTE X_INTERFACE_INFO OF aclk: SIGNAL IS "xilinx.com:signal:clock:1.0 aclk_intf CLK";
BEGIN
U0 : fir_compiler_v7_2_12
GENERIC MAP (
C_XDEVICEFAMILY => "kintex7",
C_ELABORATION_DIR => "./",
C_COMPONENT_NAME => "hrc_64_12_025",
C_COEF_FILE => "hrc_64_12_025.mif",
C_COEF_FILE_LINES => 832,
C_FILTER_TYPE => 2,
C_INTERP_RATE => 64,
C_DECIM_RATE => 1,
C_ZERO_PACKING_FACTOR => 1,
C_SYMMETRY => 0,
C_NUM_FILTS => 1,
C_NUM_TAPS => 769,
C_NUM_CHANNELS => 1,
C_CHANNEL_PATTERN => "fixed",
C_ROUND_MODE => 0,
C_COEF_RELOAD => 0,
C_NUM_RELOAD_SLOTS => 1,
C_COL_MODE => 1,
C_COL_PIPE_LEN => 4,
C_COL_CONFIG => "13",
C_OPTIMIZATION => 0,
C_DATA_PATH_WIDTHS => "2",
C_DATA_IP_PATH_WIDTHS => "2",
C_DATA_PX_PATH_WIDTHS => "2",
C_DATA_WIDTH => 2,
C_COEF_PATH_WIDTHS => "16",
C_COEF_WIDTH => 16,
C_DATA_PATH_SRC => "0",
C_COEF_PATH_SRC => "0",
C_PX_PATH_SRC => "0",
C_DATA_PATH_SIGN => "0",
C_COEF_PATH_SIGN => "0",
C_ACCUM_PATH_WIDTHS => "18",
C_OUTPUT_WIDTH => 18,
C_OUTPUT_PATH_WIDTHS => "18",
C_ACCUM_OP_PATH_WIDTHS => "18",
C_EXT_MULT_CNFG => "none",
C_DATA_PATH_PSAMP_SRC => "0",
C_OP_PATH_PSAMP_SRC => "0",
C_NUM_MADDS => 13,
C_OPT_MADDS => "none",
C_OVERSAMPLING_RATE => 1,
C_INPUT_RATE => 64,
C_OUTPUT_RATE => 1,
C_DATA_MEMTYPE => 0,
C_COEF_MEMTYPE => 2,
C_IPBUFF_MEMTYPE => 0,
C_OPBUFF_MEMTYPE => 0,
C_DATAPATH_MEMTYPE => 0,
C_MEM_ARRANGEMENT => 2,
C_DATA_MEM_PACKING => 0,
C_COEF_MEM_PACKING => 0,
C_FILTS_PACKED => 0,
C_LATENCY => 19,
C_HAS_ARESETn => 0,
C_HAS_ACLKEN => 0,
C_DATA_HAS_TLAST => 0,
C_S_DATA_HAS_FIFO => 0,
C_S_DATA_HAS_TUSER => 0,
C_S_DATA_TDATA_WIDTH => 8,
C_S_DATA_TUSER_WIDTH => 1,
C_M_DATA_HAS_TREADY => 0,
C_M_DATA_HAS_TUSER => 0,
C_M_DATA_TDATA_WIDTH => 24,
C_M_DATA_TUSER_WIDTH => 1,
C_HAS_CONFIG_CHANNEL => 0,
C_CONFIG_SYNC_MODE => 0,
C_CONFIG_PACKET_SIZE => 0,
C_CONFIG_TDATA_WIDTH => 1,
C_RELOAD_TDATA_WIDTH => 1
)
PORT MAP (
aresetn => '1',
aclk => aclk,
aclken => '1',
s_axis_data_tvalid => s_axis_data_tvalid,
s_axis_data_tready => s_axis_data_tready,
s_axis_data_tlast => '0',
s_axis_data_tuser => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_data_tdata => s_axis_data_tdata,
s_axis_config_tvalid => '0',
s_axis_config_tlast => '0',
s_axis_config_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
s_axis_reload_tvalid => '0',
s_axis_reload_tlast => '0',
s_axis_reload_tdata => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)),
m_axis_data_tvalid => m_axis_data_tvalid,
m_axis_data_tready => '1',
m_axis_data_tdata => m_axis_data_tdata
);
END hrc_64_12_025_arch;
@@ -0,0 +1,418 @@
`protect begin_protected
`protect version = 1
`protect encrypt_agent = "XILINX"
`protect encrypt_agent_info = "Xilinx Encryption Tool 2019.1"
`protect key_keyowner = "Cadence Design Systems.", key_keyname = "cds_rsa_key", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64)
`protect key_block
IijDYFYeRdzkel5iYnZFe2NzgYX9UDO+g6PdWiHeOm5P1+m9Kt//ktx0y9l3PqUsSWKKIi5tWbDg
OqtBZeM3zQ==
`protect key_keyowner = "Synopsys", key_keyname = "SNPS-VCS-RSA-2", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128)
`protect key_block
TXFD8G5gE6CUfZ/9/aBQvAaQuQ9Q6vcW5KJtFkYqsiROk19a5PsS1gCxUXtSJ+Xt20njQCTMz6jx
UaSmsNRyiV6PuCAgdQYvfeJWiNmQq7kXQnkYSjycSJyNe/xoXEYIK0mHX7J2x9ouXxNx6jQFR5Lm
jxY8fR7N9m3PTkCqNTI=
`protect key_keyowner = "Aldec", key_keyname = "ALDEC15_001", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
`protect key_block
0bdD7I2gr0nFDramUUXzPCEqtk/eE+vK1bghpNlKE+S5t5/NbqJI7gNd3XLwYh6qEIInU1StLpm1
ZEERnCmEf4+rQBAW7x7u7nIsJjSOmPWtDc9DLn5S3e1Tg+IzLUqT0rFFh5TiwuYq9A6oIvI4ufWQ
WwoeY/gITSdj6C0JQ3GFyIRhxG7psQKO9U4fj8El/Lb3YXG1+IGuXZsygyLPjjOU5LRXKo6kKsub
X1PFDvdm4rWaB9AqoPLCqp654KCyKSCoufeM/jiWRTNXwf6kL56WQKDXuyAhrasBOno4KOT3c5VP
WEHGNdGBSdU4oUFYiOmAKlCKGeUNCxMxx765QA==
`protect key_keyowner = "ATRENTA", key_keyname = "ATR-SG-2015-RSA-3", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
`protect key_block
ppkak8ss4yKmNiAZjxFq8nn58TDV/6CNcvQivN+uaaTC1viFh2EDUvJp8zqZ2dJOE2mTN9WJY0VD
93fjF/bEPMptIxFj5D6ldjwJu+xdHqS9FJ9Wajnbu++DCTUtAQE+y05rqhCz8aZWKGNejsRfG8bE
xGYNUIbFoZ9PYrDIdRcDSdZRUBadrAC+WcEM6+/HxxJq4Ly/w0BVbiEq22B0+4wVDXszrocC0mKJ
RPXzPj9v5D5aBX2ijUGbICpT6JkVGAjlIEP7HZoc+Ooxppwgc01k8snVnPVI4IVVYOjjlTQgT/qU
t0doYgFMU9nD5a1hefzXRkszYn9RHVZE5bl6NA==
`protect key_keyowner = "Xilinx", key_keyname = "xilinxt_2019_02", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
`protect key_block
KtmDUKyPqH21pzMoqq9CPc/SXFhh6Oz2JrLSFRZBS3mGc7ebGc8cQjlvJpJA0WNJlGqACicdvN1t
A7mG3V1xKtoRdR+2MhucMQ7loisN8yDj3+zqgbM5bAdlz+62WovuGfaM4EK24l8CXSfBLVGQ35JP
2zB0abBrel1cOw3DxvSIS/5wueR9/Ul+GoLmD6yF7cV2ne7eGwNXQ2OsCqdcb9wK8gNO1YfC3kE6
WwdUtjutDvyXnV49wmg6nCC8RAPNWbIhHiMMtpDjux6E1Rkd3xdCMDrxrupZyNQNtVmzcN8ITAn5
BYoTBON1CKVljCmLov84lxcdcXGcSaBAtLIiAg==
`protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VELOCE-RSA", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128)
`protect key_block
sjMrK19OPSOpuNhtGVc8GPvvQoA4nRSUShUtMXVan8pbxWL4SmeH0c+Lr407Kf0YXDBqUDDkheov
bvkczAmQfT+dVPmRtr9F/s03c46gcXSPX3D/EHROl21MVjaptRm/lAFzU2JR3vIcBrSyn9KnB+G8
cTUA3hZ8VcZWUlsE5EU=
`protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VERIF-SIM-RSA-2", key_method = "rsa"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256)
`protect key_block
KDe/Bg6fHbQcPjNnYiQKwKjMy4sdSqf+Gty0JJ0Cl1tXsbqDCM+FOd30mp8wMVyuqAm1Cs7QT211
JO6FwTQoTSe1+Ag2KZe6AMFgHaNj0EL+M24h7wdNN5Wj8M9n4Zw2cVNCAcQuMAGYbxaWpNTrYMXH
BpdQ50EQ9/kLpocWC2JhjoxshWpofJ0tpp9WlfLUPTm7TftCudU0M3dMNjnbl+Mfa3yuTHWt8aDY
6w/HgH82FHAd70Mwbh6CrcIChQUulExaSON/uCwutX0SehA5/ooAAlnWv19O8kXTawUeKwYKQikK
PjngB0eHiTimSxjDCZaaor8VbS4WfO6DyMwmEg==
`protect data_method = "AES128-CBC"
`protect encoding = (enctype = "BASE64", line_length = 76, bytes = 20128)
`protect data_block
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
KnmRsadIXQ==
`protect end_protected
@@ -0,0 +1,256 @@
10000000000000000000000000000001
10000001000000010000000100000010
10000010000000100000001000000011
10000011000000110000001100000100
10000100000001000000010000000101
10000101000001010000010100000110
10000110000001100000011000000111
10000111000001110000011100001000
10001000000010000000100000001001
10001001000010010000100100001010
10001010000010100000101000001011
10001011000010110000101100001100
10001100000011000000110000001101
10001101000011010000110100001110
10001110000011100000111000001111
10001111000011110000111100010000
10010000000100000001000000010001
10010001000100010001000100010010
10010010000100100001001000010011
10010011000100110001001100010100
10010100000101000001010000010101
10010101000101010001010100010110
10010110000101100001011000010111
10010111000101110001011100011000
10011000000110000001100000011001
10011001000110010001100100011010
10011010000110100001101000011011
10011011000110110001101100011100
10011100000111000001110000011101
10011101000111010001110100011110
10011110000111100001111000011111
10011111000111110001111100100000
10100000001000000010000000100001
10100001001000010010000100100010
10100010001000100010001000100011
10100011001000110010001100100100
10100100001001000010010000100101
10100101001001010010010100100110
10100110001001100010011000100111
10100111001001110010011100101000
10101000001010000010100000101001
10101001001010010010100100101010
10101010001010100010101000101011
10101011001010110010101100101100
10101100001011000010110000101101
10101101001011010010110100101110
10101110001011100010111000101111
10101111001011110010111100110000
10110000001100000011000000110001
10110001001100010011000100110010
10110010001100100011001000110011
10110011001100110011001100110100
10110100001101000011010000110101
10110101001101010011010100110110
10110110001101100011011000110111
10110111001101110011011100111000
10111000001110000011100000111001
10111001001110010011100100111010
10111010001110100011101000111011
10111011001110110011101100111100
10111100001111000011110000111101
10111101001111010011110100111110
10111110001111100011111000111111
10111111001111110011111101000000
11000000010000000100000001000001
11000001010000010100000101000010
11000010010000100100001001000011
11000011010000110100001101000100
11000100010001000100010001000101
11000101010001010100010101000110
11000110010001100100011001000111
11000111010001110100011101001000
11001000010010000100100001001001
11001001010010010100100101001010
11001010010010100100101001001011
11001011010010110100101101001100
11001100010011000100110001001101
11001101010011010100110101001110
11001110010011100100111001001111
11001111010011110100111101010000
11010000010100000101000001010001
11010001010100010101000101010010
11010010010100100101001001010011
11010011010100110101001101010100
11010100010101000101010001010101
11010101010101010101010101010110
11010110010101100101011001010111
11010111010101110101011101011000
11011000010110000101100001011001
11011001010110010101100101011010
11011010010110100101101001011011
11011011010110110101101101011100
11011100010111000101110001011101
11011101010111010101110101011110
11011110010111100101111001011111
11011111010111110101111101100000
11100000011000000110000001100001
11100001011000010110000101100010
11100010011000100110001001100011
11100011011000110110001101100100
11100100011001000110010001100101
11100101011001010110010101100110
11100110011001100110011001100111
11100111011001110110011101101000
11101000011010000110100001101001
11101001011010010110100101101010
11101010011010100110101001101011
11101011011010110110101101101100
11101100011011000110110001101101
11101101011011010110110101101110
11101110011011100110111001101111
11101111011011110110111101110000
11110000011100000111000001110001
11110001011100010111000101110010
11110010011100100111001001110011
11110011011100110111001101110100
11110100011101000111010001110101
11110101011101010111010101110110
11110110011101100111011001110111
11110111011101110111011101111000
11111000011110000111100001111001
11111001011110010111100101111010
11111010011110100111101001111011
11111011011110110111101101111100
11111100011111000111110001111101
11111101011111010111110101111110
11111110011111100111111001111111
11111111011111110111111110000000
00000000100000001000000010000000
00000001100000011000000110000001
00000010100000101000001010000010
00000011100000111000001110000011
00000100100001001000010010000100
00000101100001011000010110000101
00000110100001101000011010000110
00000111100001111000011110000111
00001000100010001000100010001000
00001001100010011000100110001001
00001010100010101000101010001010
00001011100010111000101110001011
00001100100011001000110010001100
00001101100011011000110110001101
00001110100011101000111010001110
00001111100011111000111110001111
00010000100100001001000010010000
00010001100100011001000110010001
00010010100100101001001010010010
00010011100100111001001110010011
00010100100101001001010010010100
00010101100101011001010110010101
00010110100101101001011010010110
00010111100101111001011110010111
00011000100110001001100010011000
00011001100110011001100110011001
00011010100110101001101010011010
00011011100110111001101110011011
00011100100111001001110010011100
00011101100111011001110110011101
00011110100111101001111010011110
00011111100111111001111110011111
00100000101000001010000010100000
00100001101000011010000110100001
00100010101000101010001010100010
00100011101000111010001110100011
00100100101001001010010010100100
00100101101001011010010110100101
00100110101001101010011010100110
00100111101001111010011110100111
00101000101010001010100010101000
00101001101010011010100110101001
00101010101010101010101010101010
00101011101010111010101110101011
00101100101011001010110010101100
00101101101011011010110110101101
00101110101011101010111010101110
00101111101011111010111110101111
00110000101100001011000010110000
00110001101100011011000110110001
00110010101100101011001010110010
00110011101100111011001110110011
00110100101101001011010010110100
00110101101101011011010110110101
00110110101101101011011010110110
00110111101101111011011110110111
00111000101110001011100010111000
00111001101110011011100110111001
00111010101110101011101010111010
00111011101110111011101110111011
00111100101111001011110010111100
00111101101111011011110110111101
00111110101111101011111010111110
00111111101111111011111110111111
01000000110000001100000011000000
01000001110000011100000111000001
01000010110000101100001011000010
01000011110000111100001111000011
01000100110001001100010011000100
01000101110001011100010111000101
01000110110001101100011011000110
01000111110001111100011111000111
01001000110010001100100011001000
01001001110010011100100111001001
01001010110010101100101011001010
01001011110010111100101111001011
01001100110011001100110011001100
01001101110011011100110111001101
01001110110011101100111011001110
01001111110011111100111111001111
01010000110100001101000011010000
01010001110100011101000111010001
01010010110100101101001011010010
01010011110100111101001111010011
01010100110101001101010011010100
01010101110101011101010111010101
01010110110101101101011011010110
01010111110101111101011111010111
01011000110110001101100011011000
01011001110110011101100111011001
01011010110110101101101011011010
01011011110110111101101111011011
01011100110111001101110011011100
01011101110111011101110111011101
01011110110111101101111011011110
01011111110111111101111111011111
01100000111000001110000011100000
01100001111000011110000111100001
01100010111000101110001011100010
01100011111000111110001111100011
01100100111001001110010011100100
01100101111001011110010111100101
01100110111001101110011011100110
01100111111001111110011111100111
01101000111010001110100011101000
01101001111010011110100111101001
01101010111010101110101011101010
01101011111010111110101111101011
01101100111011001110110011101100
01101101111011011110110111101101
01101110111011101110111011101110
01101111111011111110111111101111
01110000111100001111000011110000
01110001111100011111000111110001
01110010111100101111001011110010
01110011111100111111001111110011
01110100111101001111010011110100
01110101111101011111010111110101
01110110111101101111011011110110
01110111111101111111011111110111
01111000111110001111100011111000
01111001111110011111100111111001
01111010111110101111101011111010
01111011111110111111101111111011
01111100111111001111110011111100
01111101111111011111110111111101
01111110111111101111111011111110
01111111111111111111111111111111
@@ -0,0 +1,771 @@
RADIX = 10;
COEFDATA =
-47,
-30,
-13,
4,
21,
38,
56,
73,
89,
106,
122,
138,
153,
168,
182,
196,
209,
221,
232,
243,
252,
261,
268,
275,
281,
285,
289,
291,
292,
292,
291,
288,
285,
280,
274,
267,
259,
249,
239,
228,
215,
202,
187,
172,
156,
139,
122,
104,
85,
66,
46,
26,
5,
-15,
-36,
-56,
-77,
-98,
-118,
-138,
-158,
-177,
-195,
-213,
-231,
-247,
-263,
-277,
-291,
-303,
-314,
-325,
-333,
-341,
-347,
-351,
-354,
-356,
-356,
-354,
-351,
-346,
-340,
-332,
-322,
-311,
-298,
-284,
-268,
-250,
-231,
-211,
-189,
-166,
-142,
-117,
-90,
-63,
-35,
-6,
24,
54,
85,
116,
147,
179,
210,
242,
273,
304,
334,
363,
392,
420,
447,
473,
497,
520,
542,
562,
580,
596,
611,
623,
633,
641,
647,
650,
650,
649,
644,
637,
627,
615,
600,
582,
562,
538,
513,
484,
453,
419,
383,
345,
304,
261,
216,
169,
119,
69,
16,
-38,
-93,
-150,
-207,
-265,
-324,
-383,
-443,
-502,
-562,
-621,
-679,
-736,
-793,
-848,
-902,
-954,
-1004,
-1052,
-1097,
-1140,
-1181,
-1218,
-1252,
-1283,
-1310,
-1333,
-1353,
-1369,
-1380,
-1387,
-1389,
-1387,
-1381,
-1369,
-1353,
-1332,
-1306,
-1274,
-1238,
-1197,
-1151,
-1100,
-1044,
-983,
-918,
-848,
-773,
-694,
-611,
-524,
-432,
-337,
-239,
-137,
-33,
74,
184,
296,
410,
525,
642,
759,
877,
995,
1113,
1230,
1346,
1461,
1575,
1686,
1794,
1900,
2002,
2101,
2195,
2285,
2371,
2451,
2525,
2593,
2655,
2711,
2759,
2800,
2833,
2859,
2876,
2885,
2886,
2877,
2860,
2833,
2798,
2752,
2698,
2633,
2559,
2476,
2382,
2280,
2168,
2046,
1915,
1775,
1627,
1469,
1304,
1130,
948,
759,
563,
360,
151,
-64,
-284,
-509,
-739,
-972,
-1208,
-1447,
-1687,
-1929,
-2172,
-2414,
-2656,
-2896,
-3133,
-3368,
-3600,
-3826,
-4048,
-4263,
-4472,
-4673,
-4866,
-5050,
-5224,
-5387,
-5539,
-5679,
-5807,
-5920,
-6020,
-6104,
-6173,
-6226,
-6262,
-6281,
-6282,
-6264,
-6228,
-6171,
-6096,
-5999,
-5882,
-5745,
-5585,
-5405,
-5203,
-4978,
-4732,
-4464,
-4174,
-3861,
-3527,
-3170,
-2792,
-2392,
-1971,
-1529,
-1066,
-582,
-79,
444,
985,
1545,
2123,
2717,
3328,
3955,
4597,
5253,
5921,
6603,
7295,
7998,
8711,
9432,
10160,
10895,
11635,
12379,
13126,
13875,
14624,
15374,
16121,
16866,
17607,
18342,
19071,
19793,
20505,
21208,
21900,
22579,
23245,
23896,
24532,
25151,
25752,
26334,
26896,
27438,
27957,
28455,
28928,
29377,
29801,
30200,
30571,
30915,
31232,
31520,
31779,
32009,
32209,
32379,
32518,
32627,
32704,
32751,
32767,
32751,
32704,
32627,
32518,
32379,
32209,
32009,
31779,
31520,
31232,
30915,
30571,
30200,
29801,
29377,
28928,
28455,
27957,
27438,
26896,
26334,
25752,
25151,
24532,
23896,
23245,
22579,
21900,
21208,
20505,
19793,
19071,
18342,
17607,
16866,
16121,
15374,
14624,
13875,
13126,
12379,
11635,
10895,
10160,
9432,
8711,
7998,
7295,
6603,
5921,
5253,
4597,
3955,
3328,
2717,
2123,
1545,
985,
444,
-79,
-582,
-1066,
-1529,
-1971,
-2392,
-2792,
-3170,
-3527,
-3861,
-4174,
-4464,
-4732,
-4978,
-5203,
-5405,
-5585,
-5745,
-5882,
-5999,
-6096,
-6171,
-6228,
-6264,
-6282,
-6281,
-6262,
-6226,
-6173,
-6104,
-6020,
-5920,
-5807,
-5679,
-5539,
-5387,
-5224,
-5050,
-4866,
-4673,
-4472,
-4263,
-4048,
-3826,
-3600,
-3368,
-3133,
-2896,
-2656,
-2414,
-2172,
-1929,
-1687,
-1447,
-1208,
-972,
-739,
-509,
-284,
-64,
151,
360,
563,
759,
948,
1130,
1304,
1469,
1627,
1775,
1915,
2046,
2168,
2280,
2382,
2476,
2559,
2633,
2698,
2752,
2798,
2833,
2860,
2877,
2886,
2885,
2876,
2859,
2833,
2800,
2759,
2711,
2655,
2593,
2525,
2451,
2371,
2285,
2195,
2101,
2002,
1900,
1794,
1686,
1575,
1461,
1346,
1230,
1113,
995,
877,
759,
642,
525,
410,
296,
184,
74,
-33,
-137,
-239,
-337,
-432,
-524,
-611,
-694,
-773,
-848,
-918,
-983,
-1044,
-1100,
-1151,
-1197,
-1238,
-1274,
-1306,
-1332,
-1353,
-1369,
-1381,
-1387,
-1389,
-1387,
-1380,
-1369,
-1353,
-1333,
-1310,
-1283,
-1252,
-1218,
-1181,
-1140,
-1097,
-1052,
-1004,
-954,
-902,
-848,
-793,
-736,
-679,
-621,
-562,
-502,
-443,
-383,
-324,
-265,
-207,
-150,
-93,
-38,
16,
69,
119,
169,
216,
261,
304,
345,
383,
419,
453,
484,
513,
538,
562,
582,
600,
615,
627,
637,
644,
649,
650,
650,
647,
641,
633,
623,
611,
596,
580,
562,
542,
520,
497,
473,
447,
420,
392,
363,
334,
304,
273,
242,
210,
179,
147,
116,
85,
54,
24,
-6,
-35,
-63,
-90,
-117,
-142,
-166,
-189,
-211,
-231,
-250,
-268,
-284,
-298,
-311,
-322,
-332,
-340,
-346,
-351,
-354,
-356,
-356,
-354,
-351,
-347,
-341,
-333,
-325,
-314,
-303,
-291,
-277,
-263,
-247,
-231,
-213,
-195,
-177,
-158,
-138,
-118,
-98,
-77,
-56,
-36,
-15,
5,
26,
46,
66,
85,
104,
122,
139,
156,
172,
187,
202,
215,
228,
239,
249,
259,
267,
274,
280,
285,
288,
291,
292,
292,
291,
289,
285,
281,
275,
268,
261,
252,
243,
232,
221,
209,
196,
182,
168,
153,
138,
122,
106,
89,
73,
56,
38,
21,
4,
-13,
-30,
-47;
@@ -0,0 +1,832 @@
ffffffd1 0 0 0 0 0 0
ffffffe2 0 0 0 0 1 0
fffffff3 0 0 0 0 2 0
00000004 0 0 0 0 3 0
00000015 0 0 0 0 4 0
00000026 0 0 0 0 5 0
00000038 0 0 0 0 6 0
00000049 0 0 0 0 7 0
00000059 0 0 0 0 8 0
0000006a 0 0 0 0 9 0
0000007a 0 0 0 0 10 0
0000008a 0 0 0 0 11 0
00000099 0 0 0 0 12 0
000000a8 0 0 0 0 13 0
000000b6 0 0 0 0 14 0
000000c4 0 0 0 0 15 0
000000d1 0 0 0 0 16 0
000000dd 0 0 0 0 17 0
000000e8 0 0 0 0 18 0
000000f3 0 0 0 0 19 0
000000fc 0 0 0 0 20 0
00000105 0 0 0 0 21 0
0000010c 0 0 0 0 22 0
00000113 0 0 0 0 23 0
00000119 0 0 0 0 24 0
0000011d 0 0 0 0 25 0
00000121 0 0 0 0 26 0
00000123 0 0 0 0 27 0
00000124 0 0 0 0 28 0
00000124 0 0 0 0 29 0
00000123 0 0 0 0 30 0
00000120 0 0 0 0 31 0
0000011d 0 0 0 0 32 0
00000118 0 0 0 0 33 0
00000112 0 0 0 0 34 0
0000010b 0 0 0 0 35 0
00000103 0 0 0 0 36 0
000000f9 0 0 0 0 37 0
000000ef 0 0 0 0 38 0
000000e4 0 0 0 0 39 0
000000d7 0 0 0 0 40 0
000000ca 0 0 0 0 41 0
000000bb 0 0 0 0 42 0
000000ac 0 0 0 0 43 0
0000009c 0 0 0 0 44 0
0000008b 0 0 0 0 45 0
0000007a 0 0 0 0 46 0
00000068 0 0 0 0 47 0
00000055 0 0 0 0 48 0
00000042 0 0 0 0 49 0
0000002e 0 0 0 0 50 0
0000001a 0 0 0 0 51 0
00000005 0 0 0 0 52 0
fffffff1 0 0 0 0 53 0
ffffffdc 0 0 0 0 54 0
ffffffc8 0 0 0 0 55 0
ffffffb3 0 0 0 0 56 0
ffffff9e 0 0 0 0 57 0
ffffff8a 0 0 0 0 58 0
ffffff76 0 0 0 0 59 0
ffffff62 0 0 0 0 60 0
ffffff4f 0 0 0 0 61 0
ffffff3d 0 0 0 0 62 0
ffffff2b 0 0 0 0 63 0
ffffff19 0 1 0 0 64 0
ffffff09 0 1 0 0 65 0
fffffef9 0 1 0 0 66 0
fffffeeb 0 1 0 0 67 0
fffffedd 0 1 0 0 68 0
fffffed1 0 1 0 0 69 0
fffffec6 0 1 0 0 70 0
fffffebb 0 1 0 0 71 0
fffffeb3 0 1 0 0 72 0
fffffeab 0 1 0 0 73 0
fffffea5 0 1 0 0 74 0
fffffea1 0 1 0 0 75 0
fffffe9e 0 1 0 0 76 0
fffffe9c 0 1 0 0 77 0
fffffe9c 0 1 0 0 78 0
fffffe9e 0 1 0 0 79 0
fffffea1 0 1 0 0 80 0
fffffea6 0 1 0 0 81 0
fffffeac 0 1 0 0 82 0
fffffeb4 0 1 0 0 83 0
fffffebe 0 1 0 0 84 0
fffffec9 0 1 0 0 85 0
fffffed6 0 1 0 0 86 0
fffffee4 0 1 0 0 87 0
fffffef4 0 1 0 0 88 0
ffffff06 0 1 0 0 89 0
ffffff19 0 1 0 0 90 0
ffffff2d 0 1 0 0 91 0
ffffff43 0 1 0 0 92 0
ffffff5a 0 1 0 0 93 0
ffffff72 0 1 0 0 94 0
ffffff8b 0 1 0 0 95 0
ffffffa6 0 1 0 0 96 0
ffffffc1 0 1 0 0 97 0
ffffffdd 0 1 0 0 98 0
fffffffa 0 1 0 0 99 0
00000018 0 1 0 0 100 0
00000036 0 1 0 0 101 0
00000055 0 1 0 0 102 0
00000074 0 1 0 0 103 0
00000093 0 1 0 0 104 0
000000b3 0 1 0 0 105 0
000000d2 0 1 0 0 106 0
000000f2 0 1 0 0 107 0
00000111 0 1 0 0 108 0
00000130 0 1 0 0 109 0
0000014e 0 1 0 0 110 0
0000016b 0 1 0 0 111 0
00000188 0 1 0 0 112 0
000001a4 0 1 0 0 113 0
000001bf 0 1 0 0 114 0
000001d9 0 1 0 0 115 0
000001f1 0 1 0 0 116 0
00000208 0 1 0 0 117 0
0000021e 0 1 0 0 118 0
00000232 0 1 0 0 119 0
00000244 0 1 0 0 120 0
00000254 0 1 0 0 121 0
00000263 0 1 0 0 122 0
0000026f 0 1 0 0 123 0
00000279 0 1 0 0 124 0
00000281 0 1 0 0 125 0
00000287 0 1 0 0 126 0
0000028a 0 1 0 0 127 0
0000028a 0 2 0 0 128 0
00000289 0 2 0 0 129 0
00000284 0 2 0 0 130 0
0000027d 0 2 0 0 131 0
00000273 0 2 0 0 132 0
00000267 0 2 0 0 133 0
00000258 0 2 0 0 134 0
00000246 0 2 0 0 135 0
00000232 0 2 0 0 136 0
0000021a 0 2 0 0 137 0
00000201 0 2 0 0 138 0
000001e4 0 2 0 0 139 0
000001c5 0 2 0 0 140 0
000001a3 0 2 0 0 141 0
0000017f 0 2 0 0 142 0
00000159 0 2 0 0 143 0
00000130 0 2 0 0 144 0
00000105 0 2 0 0 145 0
000000d8 0 2 0 0 146 0
000000a9 0 2 0 0 147 0
00000077 0 2 0 0 148 0
00000045 0 2 0 0 149 0
00000010 0 2 0 0 150 0
ffffffda 0 2 0 0 151 0
ffffffa3 0 2 0 0 152 0
ffffff6a 0 2 0 0 153 0
ffffff31 0 2 0 0 154 0
fffffef7 0 2 0 0 155 0
fffffebc 0 2 0 0 156 0
fffffe81 0 2 0 0 157 0
fffffe45 0 2 0 0 158 0
fffffe0a 0 2 0 0 159 0
fffffdce 0 2 0 0 160 0
fffffd93 0 2 0 0 161 0
fffffd59 0 2 0 0 162 0
fffffd20 0 2 0 0 163 0
fffffce7 0 2 0 0 164 0
fffffcb0 0 2 0 0 165 0
fffffc7a 0 2 0 0 166 0
fffffc46 0 2 0 0 167 0
fffffc14 0 2 0 0 168 0
fffffbe4 0 2 0 0 169 0
fffffbb7 0 2 0 0 170 0
fffffb8c 0 2 0 0 171 0
fffffb63 0 2 0 0 172 0
fffffb3e 0 2 0 0 173 0
fffffb1c 0 2 0 0 174 0
fffffafd 0 2 0 0 175 0
fffffae2 0 2 0 0 176 0
fffffacb 0 2 0 0 177 0
fffffab7 0 2 0 0 178 0
fffffaa7 0 2 0 0 179 0
fffffa9c 0 2 0 0 180 0
fffffa95 0 2 0 0 181 0
fffffa93 0 2 0 0 182 0
fffffa95 0 2 0 0 183 0
fffffa9b 0 2 0 0 184 0
fffffaa7 0 2 0 0 185 0
fffffab7 0 2 0 0 186 0
fffffacc 0 2 0 0 187 0
fffffae6 0 2 0 0 188 0
fffffb06 0 2 0 0 189 0
fffffb2a 0 2 0 0 190 0
fffffb53 0 2 0 0 191 0
fffffb81 0 3 0 0 192 0
fffffbb4 0 3 0 0 193 0
fffffbec 0 3 0 0 194 0
fffffc29 0 3 0 0 195 0
fffffc6a 0 3 0 0 196 0
fffffcb0 0 3 0 0 197 0
fffffcfb 0 3 0 0 198 0
fffffd4a 0 3 0 0 199 0
fffffd9d 0 3 0 0 200 0
fffffdf4 0 3 0 0 201 0
fffffe50 0 3 0 0 202 0
fffffeaf 0 3 0 0 203 0
ffffff11 0 3 0 0 204 0
ffffff77 0 3 0 0 205 0
ffffffdf 0 3 0 0 206 0
0000004a 0 3 0 0 207 0
000000b8 0 3 0 0 208 0
00000128 0 3 0 0 209 0
0000019a 0 3 0 0 210 0
0000020d 0 3 0 0 211 0
00000282 0 3 0 0 212 0
000002f7 0 3 0 0 213 0
0000036d 0 3 0 0 214 0
000003e3 0 3 0 0 215 0
00000459 0 3 0 0 216 0
000004ce 0 3 0 0 217 0
00000542 0 3 0 0 218 0
000005b5 0 3 0 0 219 0
00000627 0 3 0 0 220 0
00000696 0 3 0 0 221 0
00000702 0 3 0 0 222 0
0000076c 0 3 0 0 223 0
000007d2 0 3 0 0 224 0
00000835 0 3 0 0 225 0
00000893 0 3 0 0 226 0
000008ed 0 3 0 0 227 0
00000943 0 3 0 0 228 0
00000993 0 3 0 0 229 0
000009dd 0 3 0 0 230 0
00000a21 0 3 0 0 231 0
00000a5f 0 3 0 0 232 0
00000a97 0 3 0 0 233 0
00000ac7 0 3 0 0 234 0
00000af0 0 3 0 0 235 0
00000b11 0 3 0 0 236 0
00000b2b 0 3 0 0 237 0
00000b3c 0 3 0 0 238 0
00000b45 0 3 0 0 239 0
00000b46 0 3 0 0 240 0
00000b3d 0 3 0 0 241 0
00000b2c 0 3 0 0 242 0
00000b11 0 3 0 0 243 0
00000aee 0 3 0 0 244 0
00000ac0 0 3 0 0 245 0
00000a8a 0 3 0 0 246 0
00000a49 0 3 0 0 247 0
000009ff 0 3 0 0 248 0
000009ac 0 3 0 0 249 0
0000094e 0 3 0 0 250 0
000008e8 0 3 0 0 251 0
00000878 0 3 0 0 252 0
000007fe 0 3 0 0 253 0
0000077b 0 3 0 0 254 0
000006ef 0 3 0 0 255 0
0000065b 0 4 0 0 256 0
000005bd 0 4 0 0 257 0
00000518 0 4 0 0 258 0
0000046a 0 4 0 0 259 0
000003b4 0 4 0 0 260 0
000002f7 0 4 0 0 261 0
00000233 0 4 0 0 262 0
00000168 0 4 0 0 263 0
00000097 0 4 0 0 264 0
ffffffc0 0 4 0 0 265 0
fffffee4 0 4 0 0 266 0
fffffe03 0 4 0 0 267 0
fffffd1d 0 4 0 0 268 0
fffffc34 0 4 0 0 269 0
fffffb48 0 4 0 0 270 0
fffffa59 0 4 0 0 271 0
fffff969 0 4 0 0 272 0
fffff877 0 4 0 0 273 0
fffff784 0 4 0 0 274 0
fffff692 0 4 0 0 275 0
fffff5a0 0 4 0 0 276 0
fffff4b0 0 4 0 0 277 0
fffff3c3 0 4 0 0 278 0
fffff2d8 0 4 0 0 279 0
fffff1f0 0 4 0 0 280 0
fffff10e 0 4 0 0 281 0
fffff030 0 4 0 0 282 0
ffffef59 0 4 0 0 283 0
ffffee88 0 4 0 0 284 0
ffffedbf 0 4 0 0 285 0
ffffecfe 0 4 0 0 286 0
ffffec46 0 4 0 0 287 0
ffffeb98 0 4 0 0 288 0
ffffeaf5 0 4 0 0 289 0
ffffea5d 0 4 0 0 290 0
ffffe9d1 0 4 0 0 291 0
ffffe951 0 4 0 0 292 0
ffffe8e0 0 4 0 0 293 0
ffffe87c 0 4 0 0 294 0
ffffe828 0 4 0 0 295 0
ffffe7e3 0 4 0 0 296 0
ffffe7ae 0 4 0 0 297 0
ffffe78a 0 4 0 0 298 0
ffffe777 0 4 0 0 299 0
ffffe776 0 4 0 0 300 0
ffffe788 0 4 0 0 301 0
ffffe7ac 0 4 0 0 302 0
ffffe7e5 0 4 0 0 303 0
ffffe830 0 4 0 0 304 0
ffffe891 0 4 0 0 305 0
ffffe906 0 4 0 0 306 0
ffffe98f 0 4 0 0 307 0
ffffea2f 0 4 0 0 308 0
ffffeae3 0 4 0 0 309 0
ffffebad 0 4 0 0 310 0
ffffec8e 0 4 0 0 311 0
ffffed84 0 4 0 0 312 0
ffffee90 0 4 0 0 313 0
ffffefb2 0 4 0 0 314 0
fffff0eb 0 4 0 0 315 0
fffff239 0 4 0 0 316 0
fffff39e 0 4 0 0 317 0
fffff518 0 4 0 0 318 0
fffff6a8 0 4 0 0 319 0
fffff84d 0 5 0 0 320 0
fffffa07 0 5 0 0 321 0
fffffbd6 0 5 0 0 322 0
fffffdba 0 5 0 0 323 0
ffffffb1 0 5 0 0 324 0
000001bc 0 5 0 0 325 0
000003d9 0 5 0 0 326 0
00000609 0 5 0 0 327 0
0000084b 0 5 0 0 328 0
00000a9d 0 5 0 0 329 0
00000d00 0 5 0 0 330 0
00000f73 0 5 0 0 331 0
000011f5 0 5 0 0 332 0
00001485 0 5 0 0 333 0
00001721 0 5 0 0 334 0
000019cb 0 5 0 0 335 0
00001c7f 0 5 0 0 336 0
00001f3e 0 5 0 0 337 0
00002207 0 5 0 0 338 0
000024d8 0 5 0 0 339 0
000027b0 0 5 0 0 340 0
00002a8f 0 5 0 0 341 0
00002d73 0 5 0 0 342 0
0000305b 0 5 0 0 343 0
00003346 0 5 0 0 344 0
00003633 0 5 0 0 345 0
00003920 0 5 0 0 346 0
00003c0e 0 5 0 0 347 0
00003ef9 0 5 0 0 348 0
000041e2 0 5 0 0 349 0
000044c7 0 5 0 0 350 0
000047a6 0 5 0 0 351 0
00004a7f 0 5 0 0 352 0
00004d51 0 5 0 0 353 0
00005019 0 5 0 0 354 0
000052d8 0 5 0 0 355 0
0000558c 0 5 0 0 356 0
00005833 0 5 0 0 357 0
00005acd 0 5 0 0 358 0
00005d58 0 5 0 0 359 0
00005fd4 0 5 0 0 360 0
0000623f 0 5 0 0 361 0
00006498 0 5 0 0 362 0
000066de 0 5 0 0 363 0
00006910 0 5 0 0 364 0
00006b2e 0 5 0 0 365 0
00006d35 0 5 0 0 366 0
00006f27 0 5 0 0 367 0
00007100 0 5 0 0 368 0
000072c1 0 5 0 0 369 0
00007469 0 5 0 0 370 0
000075f8 0 5 0 0 371 0
0000776b 0 5 0 0 372 0
000078c3 0 5 0 0 373 0
00007a00 0 5 0 0 374 0
00007b20 0 5 0 0 375 0
00007c23 0 5 0 0 376 0
00007d09 0 5 0 0 377 0
00007dd1 0 5 0 0 378 0
00007e7b 0 5 0 0 379 0
00007f06 0 5 0 0 380 0
00007f73 0 5 0 0 381 0
00007fc0 0 5 0 0 382 0
00007fef 0 5 0 0 383 0
00007fff 0 6 0 0 384 0
00007fef 0 6 0 0 385 0
00007fc0 0 6 0 0 386 0
00007f73 0 6 0 0 387 0
00007f06 0 6 0 0 388 0
00007e7b 0 6 0 0 389 0
00007dd1 0 6 0 0 390 0
00007d09 0 6 0 0 391 0
00007c23 0 6 0 0 392 0
00007b20 0 6 0 0 393 0
00007a00 0 6 0 0 394 0
000078c3 0 6 0 0 395 0
0000776b 0 6 0 0 396 0
000075f8 0 6 0 0 397 0
00007469 0 6 0 0 398 0
000072c1 0 6 0 0 399 0
00007100 0 6 0 0 400 0
00006f27 0 6 0 0 401 0
00006d35 0 6 0 0 402 0
00006b2e 0 6 0 0 403 0
00006910 0 6 0 0 404 0
000066de 0 6 0 0 405 0
00006498 0 6 0 0 406 0
0000623f 0 6 0 0 407 0
00005fd4 0 6 0 0 408 0
00005d58 0 6 0 0 409 0
00005acd 0 6 0 0 410 0
00005833 0 6 0 0 411 0
0000558c 0 6 0 0 412 0
000052d8 0 6 0 0 413 0
00005019 0 6 0 0 414 0
00004d51 0 6 0 0 415 0
00004a7f 0 6 0 0 416 0
000047a6 0 6 0 0 417 0
000044c7 0 6 0 0 418 0
000041e2 0 6 0 0 419 0
00003ef9 0 6 0 0 420 0
00003c0e 0 6 0 0 421 0
00003920 0 6 0 0 422 0
00003633 0 6 0 0 423 0
00003346 0 6 0 0 424 0
0000305b 0 6 0 0 425 0
00002d73 0 6 0 0 426 0
00002a8f 0 6 0 0 427 0
000027b0 0 6 0 0 428 0
000024d8 0 6 0 0 429 0
00002207 0 6 0 0 430 0
00001f3e 0 6 0 0 431 0
00001c7f 0 6 0 0 432 0
000019cb 0 6 0 0 433 0
00001721 0 6 0 0 434 0
00001485 0 6 0 0 435 0
000011f5 0 6 0 0 436 0
00000f73 0 6 0 0 437 0
00000d00 0 6 0 0 438 0
00000a9d 0 6 0 0 439 0
0000084b 0 6 0 0 440 0
00000609 0 6 0 0 441 0
000003d9 0 6 0 0 442 0
000001bc 0 6 0 0 443 0
ffffffb1 0 6 0 0 444 0
fffffdba 0 6 0 0 445 0
fffffbd6 0 6 0 0 446 0
fffffa07 0 6 0 0 447 0
fffff84d 0 7 0 0 448 0
fffff6a8 0 7 0 0 449 0
fffff518 0 7 0 0 450 0
fffff39e 0 7 0 0 451 0
fffff239 0 7 0 0 452 0
fffff0eb 0 7 0 0 453 0
ffffefb2 0 7 0 0 454 0
ffffee90 0 7 0 0 455 0
ffffed84 0 7 0 0 456 0
ffffec8e 0 7 0 0 457 0
ffffebad 0 7 0 0 458 0
ffffeae3 0 7 0 0 459 0
ffffea2f 0 7 0 0 460 0
ffffe98f 0 7 0 0 461 0
ffffe906 0 7 0 0 462 0
ffffe891 0 7 0 0 463 0
ffffe830 0 7 0 0 464 0
ffffe7e5 0 7 0 0 465 0
ffffe7ac 0 7 0 0 466 0
ffffe788 0 7 0 0 467 0
ffffe776 0 7 0 0 468 0
ffffe777 0 7 0 0 469 0
ffffe78a 0 7 0 0 470 0
ffffe7ae 0 7 0 0 471 0
ffffe7e3 0 7 0 0 472 0
ffffe828 0 7 0 0 473 0
ffffe87c 0 7 0 0 474 0
ffffe8e0 0 7 0 0 475 0
ffffe951 0 7 0 0 476 0
ffffe9d1 0 7 0 0 477 0
ffffea5d 0 7 0 0 478 0
ffffeaf5 0 7 0 0 479 0
ffffeb98 0 7 0 0 480 0
ffffec46 0 7 0 0 481 0
ffffecfe 0 7 0 0 482 0
ffffedbf 0 7 0 0 483 0
ffffee88 0 7 0 0 484 0
ffffef59 0 7 0 0 485 0
fffff030 0 7 0 0 486 0
fffff10e 0 7 0 0 487 0
fffff1f0 0 7 0 0 488 0
fffff2d8 0 7 0 0 489 0
fffff3c3 0 7 0 0 490 0
fffff4b0 0 7 0 0 491 0
fffff5a0 0 7 0 0 492 0
fffff692 0 7 0 0 493 0
fffff784 0 7 0 0 494 0
fffff877 0 7 0 0 495 0
fffff969 0 7 0 0 496 0
fffffa59 0 7 0 0 497 0
fffffb48 0 7 0 0 498 0
fffffc34 0 7 0 0 499 0
fffffd1d 0 7 0 0 500 0
fffffe03 0 7 0 0 501 0
fffffee4 0 7 0 0 502 0
ffffffc0 0 7 0 0 503 0
00000097 0 7 0 0 504 0
00000168 0 7 0 0 505 0
00000233 0 7 0 0 506 0
000002f7 0 7 0 0 507 0
000003b4 0 7 0 0 508 0
0000046a 0 7 0 0 509 0
00000518 0 7 0 0 510 0
000005bd 0 7 0 0 511 0
0000065b 0 8 0 0 512 0
000006ef 0 8 0 0 513 0
0000077b 0 8 0 0 514 0
000007fe 0 8 0 0 515 0
00000878 0 8 0 0 516 0
000008e8 0 8 0 0 517 0
0000094e 0 8 0 0 518 0
000009ac 0 8 0 0 519 0
000009ff 0 8 0 0 520 0
00000a49 0 8 0 0 521 0
00000a8a 0 8 0 0 522 0
00000ac0 0 8 0 0 523 0
00000aee 0 8 0 0 524 0
00000b11 0 8 0 0 525 0
00000b2c 0 8 0 0 526 0
00000b3d 0 8 0 0 527 0
00000b46 0 8 0 0 528 0
00000b45 0 8 0 0 529 0
00000b3c 0 8 0 0 530 0
00000b2b 0 8 0 0 531 0
00000b11 0 8 0 0 532 0
00000af0 0 8 0 0 533 0
00000ac7 0 8 0 0 534 0
00000a97 0 8 0 0 535 0
00000a5f 0 8 0 0 536 0
00000a21 0 8 0 0 537 0
000009dd 0 8 0 0 538 0
00000993 0 8 0 0 539 0
00000943 0 8 0 0 540 0
000008ed 0 8 0 0 541 0
00000893 0 8 0 0 542 0
00000835 0 8 0 0 543 0
000007d2 0 8 0 0 544 0
0000076c 0 8 0 0 545 0
00000702 0 8 0 0 546 0
00000696 0 8 0 0 547 0
00000627 0 8 0 0 548 0
000005b5 0 8 0 0 549 0
00000542 0 8 0 0 550 0
000004ce 0 8 0 0 551 0
00000459 0 8 0 0 552 0
000003e3 0 8 0 0 553 0
0000036d 0 8 0 0 554 0
000002f7 0 8 0 0 555 0
00000282 0 8 0 0 556 0
0000020d 0 8 0 0 557 0
0000019a 0 8 0 0 558 0
00000128 0 8 0 0 559 0
000000b8 0 8 0 0 560 0
0000004a 0 8 0 0 561 0
ffffffdf 0 8 0 0 562 0
ffffff77 0 8 0 0 563 0
ffffff11 0 8 0 0 564 0
fffffeaf 0 8 0 0 565 0
fffffe50 0 8 0 0 566 0
fffffdf4 0 8 0 0 567 0
fffffd9d 0 8 0 0 568 0
fffffd4a 0 8 0 0 569 0
fffffcfb 0 8 0 0 570 0
fffffcb0 0 8 0 0 571 0
fffffc6a 0 8 0 0 572 0
fffffc29 0 8 0 0 573 0
fffffbec 0 8 0 0 574 0
fffffbb4 0 8 0 0 575 0
fffffb81 0 9 0 0 576 0
fffffb53 0 9 0 0 577 0
fffffb2a 0 9 0 0 578 0
fffffb06 0 9 0 0 579 0
fffffae6 0 9 0 0 580 0
fffffacc 0 9 0 0 581 0
fffffab7 0 9 0 0 582 0
fffffaa7 0 9 0 0 583 0
fffffa9b 0 9 0 0 584 0
fffffa95 0 9 0 0 585 0
fffffa93 0 9 0 0 586 0
fffffa95 0 9 0 0 587 0
fffffa9c 0 9 0 0 588 0
fffffaa7 0 9 0 0 589 0
fffffab7 0 9 0 0 590 0
fffffacb 0 9 0 0 591 0
fffffae2 0 9 0 0 592 0
fffffafd 0 9 0 0 593 0
fffffb1c 0 9 0 0 594 0
fffffb3e 0 9 0 0 595 0
fffffb63 0 9 0 0 596 0
fffffb8c 0 9 0 0 597 0
fffffbb7 0 9 0 0 598 0
fffffbe4 0 9 0 0 599 0
fffffc14 0 9 0 0 600 0
fffffc46 0 9 0 0 601 0
fffffc7a 0 9 0 0 602 0
fffffcb0 0 9 0 0 603 0
fffffce7 0 9 0 0 604 0
fffffd20 0 9 0 0 605 0
fffffd59 0 9 0 0 606 0
fffffd93 0 9 0 0 607 0
fffffdce 0 9 0 0 608 0
fffffe0a 0 9 0 0 609 0
fffffe45 0 9 0 0 610 0
fffffe81 0 9 0 0 611 0
fffffebc 0 9 0 0 612 0
fffffef7 0 9 0 0 613 0
ffffff31 0 9 0 0 614 0
ffffff6a 0 9 0 0 615 0
ffffffa3 0 9 0 0 616 0
ffffffda 0 9 0 0 617 0
00000010 0 9 0 0 618 0
00000045 0 9 0 0 619 0
00000077 0 9 0 0 620 0
000000a9 0 9 0 0 621 0
000000d8 0 9 0 0 622 0
00000105 0 9 0 0 623 0
00000130 0 9 0 0 624 0
00000159 0 9 0 0 625 0
0000017f 0 9 0 0 626 0
000001a3 0 9 0 0 627 0
000001c5 0 9 0 0 628 0
000001e4 0 9 0 0 629 0
00000201 0 9 0 0 630 0
0000021a 0 9 0 0 631 0
00000232 0 9 0 0 632 0
00000246 0 9 0 0 633 0
00000258 0 9 0 0 634 0
00000267 0 9 0 0 635 0
00000273 0 9 0 0 636 0
0000027d 0 9 0 0 637 0
00000284 0 9 0 0 638 0
00000289 0 9 0 0 639 0
0000028a 0 10 0 0 640 0
0000028a 0 10 0 0 641 0
00000287 0 10 0 0 642 0
00000281 0 10 0 0 643 0
00000279 0 10 0 0 644 0
0000026f 0 10 0 0 645 0
00000263 0 10 0 0 646 0
00000254 0 10 0 0 647 0
00000244 0 10 0 0 648 0
00000232 0 10 0 0 649 0
0000021e 0 10 0 0 650 0
00000208 0 10 0 0 651 0
000001f1 0 10 0 0 652 0
000001d9 0 10 0 0 653 0
000001bf 0 10 0 0 654 0
000001a4 0 10 0 0 655 0
00000188 0 10 0 0 656 0
0000016b 0 10 0 0 657 0
0000014e 0 10 0 0 658 0
00000130 0 10 0 0 659 0
00000111 0 10 0 0 660 0
000000f2 0 10 0 0 661 0
000000d2 0 10 0 0 662 0
000000b3 0 10 0 0 663 0
00000093 0 10 0 0 664 0
00000074 0 10 0 0 665 0
00000055 0 10 0 0 666 0
00000036 0 10 0 0 667 0
00000018 0 10 0 0 668 0
fffffffa 0 10 0 0 669 0
ffffffdd 0 10 0 0 670 0
ffffffc1 0 10 0 0 671 0
ffffffa6 0 10 0 0 672 0
ffffff8b 0 10 0 0 673 0
ffffff72 0 10 0 0 674 0
ffffff5a 0 10 0 0 675 0
ffffff43 0 10 0 0 676 0
ffffff2d 0 10 0 0 677 0
ffffff19 0 10 0 0 678 0
ffffff06 0 10 0 0 679 0
fffffef4 0 10 0 0 680 0
fffffee4 0 10 0 0 681 0
fffffed6 0 10 0 0 682 0
fffffec9 0 10 0 0 683 0
fffffebe 0 10 0 0 684 0
fffffeb4 0 10 0 0 685 0
fffffeac 0 10 0 0 686 0
fffffea6 0 10 0 0 687 0
fffffea1 0 10 0 0 688 0
fffffe9e 0 10 0 0 689 0
fffffe9c 0 10 0 0 690 0
fffffe9c 0 10 0 0 691 0
fffffe9e 0 10 0 0 692 0
fffffea1 0 10 0 0 693 0
fffffea5 0 10 0 0 694 0
fffffeab 0 10 0 0 695 0
fffffeb3 0 10 0 0 696 0
fffffebb 0 10 0 0 697 0
fffffec6 0 10 0 0 698 0
fffffed1 0 10 0 0 699 0
fffffedd 0 10 0 0 700 0
fffffeeb 0 10 0 0 701 0
fffffef9 0 10 0 0 702 0
ffffff09 0 10 0 0 703 0
ffffff19 0 11 0 0 704 0
ffffff2b 0 11 0 0 705 0
ffffff3d 0 11 0 0 706 0
ffffff4f 0 11 0 0 707 0
ffffff62 0 11 0 0 708 0
ffffff76 0 11 0 0 709 0
ffffff8a 0 11 0 0 710 0
ffffff9e 0 11 0 0 711 0
ffffffb3 0 11 0 0 712 0
ffffffc8 0 11 0 0 713 0
ffffffdc 0 11 0 0 714 0
fffffff1 0 11 0 0 715 0
00000005 0 11 0 0 716 0
0000001a 0 11 0 0 717 0
0000002e 0 11 0 0 718 0
00000042 0 11 0 0 719 0
00000055 0 11 0 0 720 0
00000068 0 11 0 0 721 0
0000007a 0 11 0 0 722 0
0000008b 0 11 0 0 723 0
0000009c 0 11 0 0 724 0
000000ac 0 11 0 0 725 0
000000bb 0 11 0 0 726 0
000000ca 0 11 0 0 727 0
000000d7 0 11 0 0 728 0
000000e4 0 11 0 0 729 0
000000ef 0 11 0 0 730 0
000000f9 0 11 0 0 731 0
00000103 0 11 0 0 732 0
0000010b 0 11 0 0 733 0
00000112 0 11 0 0 734 0
00000118 0 11 0 0 735 0
0000011d 0 11 0 0 736 0
00000120 0 11 0 0 737 0
00000123 0 11 0 0 738 0
00000124 0 11 0 0 739 0
00000124 0 11 0 0 740 0
00000123 0 11 0 0 741 0
00000121 0 11 0 0 742 0
0000011d 0 11 0 0 743 0
00000119 0 11 0 0 744 0
00000113 0 11 0 0 745 0
0000010c 0 11 0 0 746 0
00000105 0 11 0 0 747 0
000000fc 0 11 0 0 748 0
000000f3 0 11 0 0 749 0
000000e8 0 11 0 0 750 0
000000dd 0 11 0 0 751 0
000000d1 0 11 0 0 752 0
000000c4 0 11 0 0 753 0
000000b6 0 11 0 0 754 0
000000a8 0 11 0 0 755 0
00000099 0 11 0 0 756 0
0000008a 0 11 0 0 757 0
0000007a 0 11 0 0 758 0
0000006a 0 11 0 0 759 0
00000059 0 11 0 0 760 0
00000049 0 11 0 0 761 0
00000038 0 11 0 0 762 0
00000026 0 11 0 0 763 0
00000015 0 11 0 0 764 0
00000004 0 11 0 0 765 0
fffffff3 0 11 0 0 766 0
ffffffe2 0 11 0 0 767 0
ffffffd1 0 12 0 0 768 0
00000000 0 12 0 0 769 0
00000000 0 12 0 0 770 0
00000000 0 12 0 0 771 0
00000000 0 12 0 0 772 0
00000000 0 12 0 0 773 0
00000000 0 12 0 0 774 0
00000000 0 12 0 0 775 0
00000000 0 12 0 0 776 0
00000000 0 12 0 0 777 0
00000000 0 12 0 0 778 0
00000000 0 12 0 0 779 0
00000000 0 12 0 0 780 0
00000000 0 12 0 0 781 0
00000000 0 12 0 0 782 0
00000000 0 12 0 0 783 0
00000000 0 12 0 0 784 0
00000000 0 12 0 0 785 0
00000000 0 12 0 0 786 0
00000000 0 12 0 0 787 0
00000000 0 12 0 0 788 0
00000000 0 12 0 0 789 0
00000000 0 12 0 0 790 0
00000000 0 12 0 0 791 0
00000000 0 12 0 0 792 0
00000000 0 12 0 0 793 0
00000000 0 12 0 0 794 0
00000000 0 12 0 0 795 0
00000000 0 12 0 0 796 0
00000000 0 12 0 0 797 0
00000000 0 12 0 0 798 0
00000000 0 12 0 0 799 0
00000000 0 12 0 0 800 0
00000000 0 12 0 0 801 0
00000000 0 12 0 0 802 0
00000000 0 12 0 0 803 0
00000000 0 12 0 0 804 0
00000000 0 12 0 0 805 0
00000000 0 12 0 0 806 0
00000000 0 12 0 0 807 0
00000000 0 12 0 0 808 0
00000000 0 12 0 0 809 0
00000000 0 12 0 0 810 0
00000000 0 12 0 0 811 0
00000000 0 12 0 0 812 0
00000000 0 12 0 0 813 0
00000000 0 12 0 0 814 0
00000000 0 12 0 0 815 0
00000000 0 12 0 0 816 0
00000000 0 12 0 0 817 0
00000000 0 12 0 0 818 0
00000000 0 12 0 0 819 0
00000000 0 12 0 0 820 0
00000000 0 12 0 0 821 0
00000000 0 12 0 0 822 0
00000000 0 12 0 0 823 0
00000000 0 12 0 0 824 0
00000000 0 12 0 0 825 0
00000000 0 12 0 0 826 0
00000000 0 12 0 0 827 0
00000000 0 12 0 0 828 0
00000000 0 12 0 0 829 0
00000000 0 12 0 0 830 0
00000000 0 12 0 0 831 0
@@ -0,0 +1,258 @@
MEMORY_INITIALIZATION_RADIX = 10;
MEMORY_INITIALIZATION_VECTOR =
-2147483647,
-2130640638,
-2113797629,
-2096954620,
-2080111611,
-2063268602,
-2046425593,
-2029582584,
-2012739575,
-1995896566,
-1979053557,
-1962210548,
-1945367539,
-1928524530,
-1911681521,
-1894838512,
-1877995503,
-1861152494,
-1844309485,
-1827466476,
-1810623467,
-1793780458,
-1776937449,
-1760094440,
-1743251431,
-1726408422,
-1709565413,
-1692722404,
-1675879395,
-1659036386,
-1642193377,
-1625350368,
-1608507359,
-1591664350,
-1574821341,
-1557978332,
-1541135323,
-1524292314,
-1507449305,
-1490606296,
-1473763287,
-1456920278,
-1440077269,
-1423234260,
-1406391251,
-1389548242,
-1372705233,
-1355862224,
-1339019215,
-1322176206,
-1305333197,
-1288490188,
-1271647179,
-1254804170,
-1237961161,
-1221118152,
-1204275143,
-1187432134,
-1170589125,
-1153746116,
-1136903107,
-1120060098,
-1103217089,
-1086374080,
-1069531071,
-1052688062,
-1035845053,
-1019002044,
-1002159035,
-985316026,
-968473017,
-951630008,
-934786999,
-917943990,
-901100981,
-884257972,
-867414963,
-850571954,
-833728945,
-816885936,
-800042927,
-783199918,
-766356909,
-749513900,
-732670891,
-715827882,
-698984873,
-682141864,
-665298855,
-648455846,
-631612837,
-614769828,
-597926819,
-581083810,
-564240801,
-547397792,
-530554783,
-513711774,
-496868765,
-480025756,
-463182747,
-446339738,
-429496729,
-412653720,
-395810711,
-378967702,
-362124693,
-345281684,
-328438675,
-311595666,
-294752657,
-277909648,
-261066639,
-244223630,
-227380621,
-210537612,
-193694603,
-176851594,
-160008585,
-143165576,
-126322567,
-109479558,
-92636549,
-75793540,
-58950531,
-42107522,
-25264513,
-8421504,
8421504,
25264513,
42107522,
58950531,
75793540,
92636549,
109479558,
126322567,
143165576,
160008585,
176851594,
193694603,
210537612,
227380621,
244223630,
261066639,
277909648,
294752657,
311595666,
328438675,
345281684,
362124693,
378967702,
395810711,
412653720,
429496729,
446339738,
463182747,
480025756,
496868765,
513711774,
530554783,
547397792,
564240801,
581083810,
597926819,
614769828,
631612837,
648455846,
665298855,
682141864,
698984873,
715827882,
732670891,
749513900,
766356909,
783199918,
800042927,
816885936,
833728945,
850571954,
867414963,
884257972,
901100981,
917943990,
934786999,
951630008,
968473017,
985316026,
1002159035,
1019002044,
1035845053,
1052688062,
1069531071,
1086374080,
1103217089,
1120060098,
1136903107,
1153746116,
1170589125,
1187432134,
1204275143,
1221118152,
1237961161,
1254804170,
1271647179,
1288490188,
1305333197,
1322176206,
1339019215,
1355862224,
1372705233,
1389548242,
1406391251,
1423234260,
1440077269,
1456920278,
1473763287,
1490606296,
1507449305,
1524292314,
1541135323,
1557978332,
1574821341,
1591664350,
1608507359,
1625350368,
1642193377,
1659036386,
1675879395,
1692722404,
1709565413,
1726408422,
1743251431,
1760094440,
1776937449,
1793780458,
1810623467,
1827466476,
1844309485,
1861152494,
1877995503,
1894838512,
1911681521,
1928524530,
1945367539,
1962210548,
1979053557,
1995896566,
2012739575,
2029582584,
2046425593,
2063268602,
2080111611,
2096954620,
2113797629,
2130640638,
2147483647;
@@ -0,0 +1,83 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required
# to simulate the design for a simulator, the directory structure
# and the generated exported files.
#
################################################################################
1. Simulate Design
To simulate design, cd to the simulator directory and execute the script.
For example:-
% cd questa
% ./top.sh
The export simulation flow requires the Xilinx pre-compiled simulation library
components for the target simulator. These components are referred using the
'-lib_map_path' switch. If this switch is specified, then the export simulation
will automatically set this library path in the generated script and update,
copy the simulator setup file(s) in the exported directory.
If '-lib_map_path' is not specified, then the pre-compiled simulation library
information will not be included in the exported scripts and that may cause
simulation errors when running this script. Alternatively, you can provide the
library information using this switch while executing the generated script.
For example:-
% ./top.sh -lib_map_path /design/questa/clibs
Please refer to the generated script header 'Prerequisite' section for more details.
2. Directory Structure
By default, if the -directory switch is not specified, export_simulation will
create the following directory structure:-
<current_working_directory>/export_sim/<simulator>
For example, if the current working directory is /tmp/test, export_simulation
will create the following directory path:-
/tmp/test/export_sim/questa
If -directory switch is specified, export_simulation will create a simulator
sub-directory under the specified directory path.
For example, 'export_simulation -directory /tmp/test/my_test_area/func_sim'
command will create the following directory:-
/tmp/test/my_test_area/func_sim/questa
By default, if -simulator is not specified, export_simulation will create a
simulator sub-directory for each simulator and export the files for each simulator
in this sub-directory respectively.
IMPORTANT: Please note that the simulation library path must be specified manually
in the generated script for the respective simulator. Please refer to the generated
script header 'Prerequisite' section for more details.
3. Exported script and files
Export simulation will create the driver shell script, setup files and copy the
design sources in the output directory path.
By default, when the -script_name switch is not specified, export_simulation will
create the following script name:-
<simulation_top>.sh (Unix)
When exporting the files for an IP using the -of_objects switch, export_simulation
will create the following script name:-
<ip-name>.sh (Unix)
Export simulation will create the setup files for the target simulator specified
with the -simulator switch.
For example, if the target simulator is "ies", export_simulation will create the
'cds.lib', 'hdl.var' and design library diectories and mappings in the 'cds.lib'
file.
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,154 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Aldec Active-HDL Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
source compile.do 2>&1 | tee -a compile.log
}
# RUN_STEP: <simulate>
simulate()
{
runvsimsa -l simulate.log -do "do {simulate.do}"
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
map_setup_file $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
map_setup_file $2
esac
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Map library.cfg file
map_setup_file()
{
file="library.cfg"
lib_map_path="<SPECIFY_COMPILED_LIB_PATH>"
if [[ ($1 != "" && -e $1) ]]; then
lib_map_path="$1"
else
echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n"
fi
if [[ ($lib_map_path != "") ]]; then
src_file="$lib_map_path/$file"
if [[ -e $src_file ]]; then
vmap -link $lib_map_path
fi
fi
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb work activehdl)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,52 @@
vlib work
vlib activehdl
vlib activehdl/xil_defaultlib
vlib activehdl/xpm
vlib activehdl/xbip_utils_v3_0_10
vlib activehdl/axi_utils_v2_0_6
vlib activehdl/xbip_pipe_v3_0_6
vlib activehdl/xbip_bram18k_v3_0_6
vlib activehdl/mult_gen_v12_0_15
vlib activehdl/cmpy_v6_0_17
vmap xil_defaultlib activehdl/xil_defaultlib
vmap xpm activehdl/xpm
vmap xbip_utils_v3_0_10 activehdl/xbip_utils_v3_0_10
vmap axi_utils_v2_0_6 activehdl/axi_utils_v2_0_6
vmap xbip_pipe_v3_0_6 activehdl/xbip_pipe_v3_0_6
vmap xbip_bram18k_v3_0_6 activehdl/xbip_bram18k_v3_0_6
vmap mult_gen_v12_0_15 activehdl/mult_gen_v12_0_15
vmap cmpy_v6_0_17 activehdl/cmpy_v6_0_17
vlog -work xil_defaultlib -sv2k12 \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
vcom -work xpm -93 \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
vcom -work xbip_utils_v3_0_10 -93 \
"../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
vcom -work axi_utils_v2_0_6 -93 \
"../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
vcom -work xbip_pipe_v3_0_6 -93 \
"../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
vcom -work xbip_bram18k_v3_0_6 -93 \
"../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
vcom -work mult_gen_v12_0_15 -93 \
"../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
vcom -work cmpy_v6_0_17 -93 \
"../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
vcom -work xil_defaultlib -93 \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
vlog -work xil_defaultlib \
"glbl.v"
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,17 @@
onbreak {quit -force}
onerror {quit -force}
asim -t 1ps +access +r +m+cmpy_18x8 -L xil_defaultlib -L xpm -L xbip_utils_v3_0_10 -L axi_utils_v2_0_6 -L xbip_pipe_v3_0_6 -L xbip_bram18k_v3_0_6 -L mult_gen_v12_0_15 -L cmpy_v6_0_17 -L unisims_ver -L unimacro_ver -L secureip -O5 xil_defaultlib.cmpy_18x8 xil_defaultlib.glbl
do {wave.do}
view wave
view structure
do {cmpy_18x8.udo}
run -all
endsim
quit -force
@@ -0,0 +1,2 @@
add wave *
add wave /glbl/GSR
@@ -0,0 +1,48 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'execute' function for the single-step flow. This
function is called from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,175 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Cadence Incisive Enterprise Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Directory path for design sources and include directories (if any) wrt this path
ref_dir="."
# Override directory with 'export_sim_ref_dir' env path value if set in the shell
if [[ (! -z "$export_sim_ref_dir") && ($export_sim_ref_dir != "") ]]; then
ref_dir="$export_sim_ref_dir"
fi
# Set the compiled library directory
ref_lib_dir="."
# Command line options
irun_opts="-64bit -v93 -relax -access +rwc -namemap_mixgen"
# Design libraries
design_libs=(xil_defaultlib xpm xbip_utils_v3_0_10 axi_utils_v2_0_6 xbip_pipe_v3_0_6 xbip_bram18k_v3_0_6 mult_gen_v12_0_15 cmpy_v6_0_17)
# Simulation root library directory
sim_lib_dir="ies_lib"
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
execute
}
# RUN_STEP: <execute>
execute()
{
irun $irun_opts \
-reflib "$ref_lib_dir/unisim:unisim" \
-reflib "$ref_lib_dir/unisims_ver:unisims_ver" \
-reflib "$ref_lib_dir/secureip:secureip" \
-reflib "$ref_lib_dir/unimacro:unimacro" \
-reflib "$ref_lib_dir/unimacro_ver:unimacro_ver" \
-top xil_defaultlib.cmpy_18x8 \
-f run.f \
-top glbl \
glbl.v
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
else
ref_lib_dir=$2
fi
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
esac
create_lib_dir
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Create design library directory paths
create_lib_dir()
{
if [[ -e $sim_lib_dir ]]; then
rm -rf $sim_lib_dir
fi
for (( i=0; i<${#design_libs[*]}; i++ )); do
lib="${design_libs[i]}"
lib_dir="$sim_lib_dir/$lib"
if [[ ! -e $lib_dir ]]; then
mkdir -p $lib_dir
fi
done
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(ncsim.key irun.key irun.log waves.shm irun.history .simvision INCA_libs)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
create_lib_dir
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,31 @@
-makelib ies_lib/xil_defaultlib -sv \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
-endlib
-makelib ies_lib/xpm \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
-endlib
-makelib ies_lib/xbip_utils_v3_0_10 \
"../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/axi_utils_v2_0_6 \
"../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/xbip_pipe_v3_0_6 \
"../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/xbip_bram18k_v3_0_6 \
"../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/mult_gen_v12_0_15 \
"../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/cmpy_v6_0_17 \
"../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
-endlib
-makelib ies_lib/xil_defaultlib \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
-endlib
-makelib ies_lib/xil_defaultlib \
glbl.v
-endlib
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,167 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Mentor Graphics ModelSim Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
source compile.do 2>&1 | tee -a compile.log
}
# RUN_STEP: <simulate>
simulate()
{
vsim -64 -c -do "do {simulate.do}" -l simulate.log
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
copy_setup_file $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
copy_setup_file $2
esac
create_lib_dir
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Copy modelsim.ini file
copy_setup_file()
{
file="modelsim.ini"
if [[ ($1 != "") ]]; then
lib_map_path="$1"
else
lib_map_path="C:/Mentor/CompLib/2019.1.3"
fi
if [[ ($lib_map_path != "") ]]; then
src_file="$lib_map_path/$file"
cp $src_file .
fi
}
# Create design library directory
create_lib_dir()
{
lib_dir="modelsim_lib"
if [[ -e $lib_dir ]]; then
rm -rf $lib_dir
fi
mkdir $lib_dir
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(compile.log elaborate.log simulate.log vsim.wlf modelsim_lib)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
create_lib_dir
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,11 @@
vlib modelsim_lib/work
vlib modelsim_lib/msim
vlib modelsim_lib/msim/xil_defaultlib
vmap xil_defaultlib modelsim_lib/msim/xil_defaultlib
vcom -work xil_defaultlib -64 -93 \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
@@ -0,0 +1 @@
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
@@ -0,0 +1,16 @@
onbreak {quit -f}
onerror {quit -f}
vsim -voptargs="+acc" -t 1ps -L xbip_utils_v3_0_10 -L axi_utils_v2_0_6 -L xbip_pipe_v3_0_6 -L xbip_bram18k_v3_0_6 -L mult_gen_v12_0_15 -L cmpy_v6_0_17 -L xil_defaultlib -L secureip -L xpm -lib xil_defaultlib xil_defaultlib.cmpy_18x8
do {wave.do}
view wave
view structure
view signals
do {cmpy_18x8.udo}
run -all
quit -force
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,175 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Mentor Graphics Questa Advanced Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
elaborate
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
source compile.do 2>&1 | tee -a compile.log
}
# RUN_STEP: <elaborate>
elaborate()
{
source elaborate.do 2>&1 | tee -a elaborate.log
}
# RUN_STEP: <simulate>
simulate()
{
vsim -64 -c -do "do {simulate.do}" -l simulate.log
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
copy_setup_file $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
copy_setup_file $2
esac
create_lib_dir
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Copy modelsim.ini file
copy_setup_file()
{
file="modelsim.ini"
lib_map_path="<SPECIFY_COMPILED_LIB_PATH>"
if [[ ($1 != "" && -e $1) ]]; then
lib_map_path="$1"
else
echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n"
fi
if [[ ($lib_map_path != "") ]]; then
src_file="$lib_map_path/$file"
cp $src_file .
fi
}
# Create design library directory
create_lib_dir()
{
lib_dir="questa_lib"
if [[ -e $lib_dir ]]; then
rm -rf $lib_dir
fi
mkdir $lib_dir
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(compile.log elaborate.log simulate.log vsim.wlf questa_lib)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
create_lib_dir
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,52 @@
vlib questa_lib/work
vlib questa_lib/msim
vlib questa_lib/msim/xil_defaultlib
vlib questa_lib/msim/xpm
vlib questa_lib/msim/xbip_utils_v3_0_10
vlib questa_lib/msim/axi_utils_v2_0_6
vlib questa_lib/msim/xbip_pipe_v3_0_6
vlib questa_lib/msim/xbip_bram18k_v3_0_6
vlib questa_lib/msim/mult_gen_v12_0_15
vlib questa_lib/msim/cmpy_v6_0_17
vmap xil_defaultlib questa_lib/msim/xil_defaultlib
vmap xpm questa_lib/msim/xpm
vmap xbip_utils_v3_0_10 questa_lib/msim/xbip_utils_v3_0_10
vmap axi_utils_v2_0_6 questa_lib/msim/axi_utils_v2_0_6
vmap xbip_pipe_v3_0_6 questa_lib/msim/xbip_pipe_v3_0_6
vmap xbip_bram18k_v3_0_6 questa_lib/msim/xbip_bram18k_v3_0_6
vmap mult_gen_v12_0_15 questa_lib/msim/mult_gen_v12_0_15
vmap cmpy_v6_0_17 questa_lib/msim/cmpy_v6_0_17
vlog -work xil_defaultlib -64 -sv \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
vcom -work xpm -64 -93 \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
vcom -work xbip_utils_v3_0_10 -64 -93 \
"../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
vcom -work axi_utils_v2_0_6 -64 -93 \
"../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
vcom -work xbip_pipe_v3_0_6 -64 -93 \
"../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
vcom -work xbip_bram18k_v3_0_6 -64 -93 \
"../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
vcom -work mult_gen_v12_0_15 -64 -93 \
"../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
vcom -work cmpy_v6_0_17 -64 -93 \
"../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
vcom -work xil_defaultlib -64 -93 \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
vlog -work xil_defaultlib \
"glbl.v"
@@ -0,0 +1 @@
vopt -64 +acc -l elaborate.log -L xil_defaultlib -L xpm -L xbip_utils_v3_0_10 -L axi_utils_v2_0_6 -L xbip_pipe_v3_0_6 -L xbip_bram18k_v3_0_6 -L mult_gen_v12_0_15 -L cmpy_v6_0_17 -L unisims_ver -L unimacro_ver -L secureip -work xil_defaultlib xil_defaultlib.cmpy_18x8 xil_defaultlib.glbl -o cmpy_18x8_opt
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,16 @@
onbreak {quit -f}
onerror {quit -f}
vsim -t 1ps -lib xil_defaultlib cmpy_18x8_opt
do {wave.do}
view wave
view structure
view signals
do {cmpy_18x8.udo}
run -all
quit -force
@@ -0,0 +1,2 @@
add wave *
add wave /glbl/GSR
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,154 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Aldec Riviera-PRO Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
source compile.do 2>&1 | tee -a compile.log
}
# RUN_STEP: <simulate>
simulate()
{
runvsimsa -l simulate.log -do "do {simulate.do}"
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
map_setup_file $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
map_setup_file $2
esac
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Map library.cfg file
map_setup_file()
{
file="library.cfg"
lib_map_path="<SPECIFY_COMPILED_LIB_PATH>"
if [[ ($1 != "" && -e $1) ]]; then
lib_map_path="$1"
else
echo -e "ERROR: Compiled simulation library directory path not specified or does not exist (type "./top.sh -help" for more information)\n"
fi
if [[ ($lib_map_path != "") ]]; then
src_file="$lib_map_path/$file"
if [[ -e $src_file ]]; then
vmap -link $lib_map_path
fi
fi
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(compile.log elaboration.log simulate.log dataset.asdb work riviera)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,52 @@
vlib work
vlib riviera
vlib riviera/xil_defaultlib
vlib riviera/xpm
vlib riviera/xbip_utils_v3_0_10
vlib riviera/axi_utils_v2_0_6
vlib riviera/xbip_pipe_v3_0_6
vlib riviera/xbip_bram18k_v3_0_6
vlib riviera/mult_gen_v12_0_15
vlib riviera/cmpy_v6_0_17
vmap xil_defaultlib riviera/xil_defaultlib
vmap xpm riviera/xpm
vmap xbip_utils_v3_0_10 riviera/xbip_utils_v3_0_10
vmap axi_utils_v2_0_6 riviera/axi_utils_v2_0_6
vmap xbip_pipe_v3_0_6 riviera/xbip_pipe_v3_0_6
vmap xbip_bram18k_v3_0_6 riviera/xbip_bram18k_v3_0_6
vmap mult_gen_v12_0_15 riviera/mult_gen_v12_0_15
vmap cmpy_v6_0_17 riviera/cmpy_v6_0_17
vlog -work xil_defaultlib -sv2k12 \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
vcom -work xpm -93 \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
vcom -work xbip_utils_v3_0_10 -93 \
"../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
vcom -work axi_utils_v2_0_6 -93 \
"../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
vcom -work xbip_pipe_v3_0_6 -93 \
"../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
vcom -work xbip_bram18k_v3_0_6 -93 \
"../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
vcom -work mult_gen_v12_0_15 -93 \
"../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
vcom -work cmpy_v6_0_17 -93 \
"../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
vcom -work xil_defaultlib -93 \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
vlog -work xil_defaultlib \
"glbl.v"
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,17 @@
onbreak {quit -force}
onerror {quit -force}
asim -t 1ps +access +r +m+cmpy_18x8 -L xil_defaultlib -L xpm -L xbip_utils_v3_0_10 -L axi_utils_v2_0_6 -L xbip_pipe_v3_0_6 -L xbip_bram18k_v3_0_6 -L mult_gen_v12_0_15 -L cmpy_v6_0_17 -L unisims_ver -L unimacro_ver -L secureip -O5 xil_defaultlib.cmpy_18x8 xil_defaultlib.glbl
do {wave.do}
view wave
view structure
do {cmpy_18x8.udo}
run -all
endsim
quit -force
@@ -0,0 +1,2 @@
add wave *
add wave /glbl/GSR
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,252 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Synopsys Verilog Compiler Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Directory path for design sources and include directories (if any) wrt this path
ref_dir="."
# Override directory with 'export_sim_ref_dir' env path value if set in the shell
if [[ (! -z "$export_sim_ref_dir") && ($export_sim_ref_dir != "") ]]; then
ref_dir="$export_sim_ref_dir"
fi
# Command line options
vlogan_opts="-full64"
vhdlan_opts="-full64"
vcs_elab_opts="-full64 -debug_pp -t ps -licqueue -l elaborate.log"
vcs_sim_opts="-ucli -licqueue -l simulate.log"
# Design libraries
design_libs=(xil_defaultlib xpm xbip_utils_v3_0_10 axi_utils_v2_0_6 xbip_pipe_v3_0_6 xbip_bram18k_v3_0_6 mult_gen_v12_0_15 cmpy_v6_0_17)
# Simulation root library directory
sim_lib_dir="vcs_lib"
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
elaborate
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
vlogan -work xil_defaultlib $vlogan_opts -sverilog \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
2>&1 | tee -a vlogan.log
vhdlan -work xpm $vhdlan_opts \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work xbip_utils_v3_0_10 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work axi_utils_v2_0_6 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work xbip_pipe_v3_0_6 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work xbip_bram18k_v3_0_6 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work mult_gen_v12_0_15 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work cmpy_v6_0_17 $vhdlan_opts \
"$ref_dir/../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
2>&1 | tee -a vhdlan.log
vhdlan -work xil_defaultlib $vhdlan_opts \
"$ref_dir/../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
2>&1 | tee -a vhdlan.log
vlogan -work xil_defaultlib $vlogan_opts +v2k \
glbl.v \
2>&1 | tee -a vlogan.log
}
# RUN_STEP: <elaborate>
elaborate()
{
vcs $vcs_elab_opts xil_defaultlib.cmpy_18x8 xil_defaultlib.glbl -o cmpy_18x8_simv
}
# RUN_STEP: <simulate>
simulate()
{
./cmpy_18x8_simv $vcs_sim_opts -do simulate.do
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
create_lib_mappings $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
create_lib_mappings $2
esac
create_lib_dir
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Define design library mappings
create_lib_mappings()
{
file="synopsys_sim.setup"
if [[ -e $file ]]; then
if [[ ($1 == "") ]]; then
return
else
rm -rf $file
fi
fi
touch $file
lib_map_path=""
if [[ ($1 != "") ]]; then
lib_map_path="$1"
fi
for (( i=0; i<${#design_libs[*]}; i++ )); do
lib="${design_libs[i]}"
mapping="$lib:$sim_lib_dir/$lib"
echo $mapping >> $file
done
if [[ ($lib_map_path != "") ]]; then
incl_ref="OTHERS=$lib_map_path/synopsys_sim.setup"
echo $incl_ref >> $file
fi
}
# Create design library directory paths
create_lib_dir()
{
if [[ -e $sim_lib_dir ]]; then
rm -rf $sim_lib_dir
fi
for (( i=0; i<${#design_libs[*]}; i++ )); do
lib="${design_libs[i]}"
lib_dir="$sim_lib_dir/$lib"
if [[ ! -e $lib_dir ]]; then
mkdir -p $lib_dir
fi
done
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(ucli.key cmpy_18x8_simv vlogan.log vhdlan.log compile.log elaborate.log simulate.log .vlogansetup.env .vlogansetup.args .vcs_lib_lock scirocco_command.log 64 AN.DB csrc cmpy_18x8_simv.daidir)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
create_lib_dir
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,48 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'execute' function for the single-step flow. This
function is called from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,175 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Cadence Xcelium Parallel Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
# Prerequisite:- To compile and run simulation, you must compile the Xilinx simulation libraries using the
# 'compile_simlib' TCL command. For more information about this command, run 'compile_simlib -help' in the
# Vivado Tcl Shell. Once the libraries have been compiled successfully, specify the -lib_map_path switch
# that points to these libraries and rerun export_simulation. For more information about this switch please
# type 'export_simulation -help' in the Tcl shell.
#
# You can also point to the simulation libraries by either replacing the <SPECIFY_COMPILED_LIB_PATH> in this
# script with the compiled library directory path or specify this path with the '-lib_map_path' switch when
# executing this script. Please type 'cmpy_18x8.sh -help' for more information.
#
# Additional references - 'Xilinx Vivado Design Suite User Guide:Logic simulation (UG900)'
#
#*********************************************************************************************************
# Directory path for design sources and include directories (if any) wrt this path
ref_dir="."
# Override directory with 'export_sim_ref_dir' env path value if set in the shell
if [[ (! -z "$export_sim_ref_dir") && ($export_sim_ref_dir != "") ]]; then
ref_dir="$export_sim_ref_dir"
fi
# Set the compiled library directory
ref_lib_dir="."
# Command line options
xrun_opts="-64bit -v93 -relax -access +rwc -namemap_mixgen"
# Design libraries
design_libs=(xil_defaultlib xpm xbip_utils_v3_0_10 axi_utils_v2_0_6 xbip_pipe_v3_0_6 xbip_bram18k_v3_0_6 mult_gen_v12_0_15 cmpy_v6_0_17)
# Simulation root library directory
sim_lib_dir="xcelium_lib"
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
execute
}
# RUN_STEP: <execute>
execute()
{
xrun $xrun_opts \
-reflib "$ref_lib_dir/unisim:unisim" \
-reflib "$ref_lib_dir/unisims_ver:unisims_ver" \
-reflib "$ref_lib_dir/secureip:secureip" \
-reflib "$ref_lib_dir/unimacro:unimacro" \
-reflib "$ref_lib_dir/unimacro_ver:unimacro_ver" \
-top xil_defaultlib.cmpy_18x8 \
-f run.f \
-top glbl \
glbl.v
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
else
ref_lib_dir=$2
fi
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
esac
create_lib_dir
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Create design library directory paths
create_lib_dir()
{
if [[ -e $sim_lib_dir ]]; then
rm -rf $sim_lib_dir
fi
for (( i=0; i<${#design_libs[*]}; i++ )); do
lib="${design_libs[i]}"
lib_dir="$sim_lib_dir/$lib"
if [[ ! -e $lib_dir ]]; then
mkdir -p $lib_dir
fi
done
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(xmsim.key xrun.key xrun.log waves.shm xrun.history .simvision xcelium.d xcelium)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
create_lib_dir
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2
@@ -0,0 +1,10 @@
xpm_memory.sv,systemverilog,xil_defaultlib,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv,
xpm_VCOMP.vhd,vhdl,xpm,C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd,
xbip_utils_v3_0_vh_rfs.vhd,vhdl,xbip_utils_v3_0_10,../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd,
axi_utils_v2_0_vh_rfs.vhd,vhdl,axi_utils_v2_0_6,../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd,
xbip_pipe_v3_0_vh_rfs.vhd,vhdl,xbip_pipe_v3_0_6,../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd,
xbip_bram18k_v3_0_vh_rfs.vhd,vhdl,xbip_bram18k_v3_0_6,../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd,
mult_gen_v12_0_vh_rfs.vhd,vhdl,mult_gen_v12_0_15,../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd,
cmpy_v6_0_vh_rfs.vhd,vhdl,cmpy_v6_0_17,../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd,
cmpy_18x8.vhd,vhdl,xil_defaultlib,../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd,
glbl.v,Verilog,xil_defaultlib,glbl.v
@@ -0,0 +1,71 @@
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.14 2010/10/28 20:44:00 fphillip Exp $
`ifndef GLBL
`define GLBL
`timescale 1 ps / 1 ps
module glbl ();
parameter ROC_WIDTH = 100000;
parameter TOC_WIDTH = 0;
//-------- STARTUP Globals --------------
wire GSR;
wire GTS;
wire GWE;
wire PRLD;
tri1 p_up_tmp;
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
wire PROGB_GLBL;
wire CCLKO_GLBL;
wire FCSBO_GLBL;
wire [3:0] DO_GLBL;
wire [3:0] DI_GLBL;
reg GSR_int;
reg GTS_int;
reg PRLD_int;
//-------- JTAG Globals --------------
wire JTAG_TDO_GLBL;
wire JTAG_TCK_GLBL;
wire JTAG_TDI_GLBL;
wire JTAG_TMS_GLBL;
wire JTAG_TRST_GLBL;
reg JTAG_CAPTURE_GLBL;
reg JTAG_RESET_GLBL;
reg JTAG_SHIFT_GLBL;
reg JTAG_UPDATE_GLBL;
reg JTAG_RUNTEST_GLBL;
reg JTAG_SEL1_GLBL = 0;
reg JTAG_SEL2_GLBL = 0 ;
reg JTAG_SEL3_GLBL = 0;
reg JTAG_SEL4_GLBL = 0;
reg JTAG_USER_TDO1_GLBL = 1'bz;
reg JTAG_USER_TDO2_GLBL = 1'bz;
reg JTAG_USER_TDO3_GLBL = 1'bz;
reg JTAG_USER_TDO4_GLBL = 1'bz;
assign (strong1, weak0) GSR = GSR_int;
assign (strong1, weak0) GTS = GTS_int;
assign (weak1, weak0) PRLD = PRLD_int;
initial begin
GSR_int = 1'b1;
PRLD_int = 1'b1;
#(ROC_WIDTH)
GSR_int = 1'b0;
PRLD_int = 1'b0;
end
initial begin
GTS_int = 1'b1;
#(TOC_WIDTH)
GTS_int = 1'b0;
end
endmodule
`endif
@@ -0,0 +1,31 @@
-makelib xcelium_lib/xil_defaultlib -sv \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_memory/hdl/xpm_memory.sv" \
-endlib
-makelib xcelium_lib/xpm \
"C:/Xilinx/Vivado/2019.1/data/ip/xpm/xpm_VCOMP.vhd" \
-endlib
-makelib xcelium_lib/xbip_utils_v3_0_10 \
"../../../ipstatic/hdl/xbip_utils_v3_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/axi_utils_v2_0_6 \
"../../../ipstatic/hdl/axi_utils_v2_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/xbip_pipe_v3_0_6 \
"../../../ipstatic/hdl/xbip_pipe_v3_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/xbip_bram18k_v3_0_6 \
"../../../ipstatic/hdl/xbip_bram18k_v3_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/mult_gen_v12_0_15 \
"../../../ipstatic/hdl/mult_gen_v12_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/cmpy_v6_0_17 \
"../../../ipstatic/hdl/cmpy_v6_0_vh_rfs.vhd" \
-endlib
-makelib xcelium_lib/xil_defaultlib \
"../../../ip/cmpy_18x8/sim/cmpy_18x8.vhd" \
-endlib
-makelib xcelium_lib/xil_defaultlib \
glbl.v
-endlib
@@ -0,0 +1,49 @@
################################################################################
# Vivado (TM) v2019.1.3 (64-bit)
#
# README.txt: Please read the sections below to understand the steps required to
# run the exported script and information about the source files.
#
# Generated by export_simulation on Sat Mar 18 23:15:09 +0800 2023
#
################################################################################
1. How to run the generated simulation script:-
From the shell prompt in the current directory, issue the following command:-
./cmpy_18x8.sh
This command will launch the 'compile', 'elaborate' and 'simulate' functions
implemented in the script file for the 3-step flow. These functions are called
from the main 'run' function in the script file.
The 'run' function first executes the 'setup' function, the purpose of which is to
create simulator specific setup files, create design library mappings and library
directories and copy 'glbl.v' from the Vivado software install location into the
current directory.
The 'setup' function is also used for removing the simulator generated data in
order to reset the current directory to the original state when export_simulation
was launched from Vivado. This generated data can be removed by specifying the
'-reset_run' switch to the './cmpy_18x8.sh' script.
./cmpy_18x8.sh -reset_run
To keep the generated data from the previous run but regenerate the setup files and
library directories, use the '-noclean_files' switch.
./cmpy_18x8.sh -noclean_files
For more information on the script, please type './cmpy_18x8.sh -help'.
2. Additional design information files:-
export_simulation generates following additional file that can be used for fetching
the design files information or for integrating with external custom scripts.
Name : file_info.txt
Purpose: This file contains detail design file information based on the compile order
when export_simulation was executed from Vivado. The file contains information
about the file type, name, whether it is part of the IP, associated library
and the file path information.
@@ -0,0 +1,12 @@
set curr_wave [current_wave_config]
if { [string length $curr_wave] == 0 } {
if { [llength [get_objects]] > 0} {
add_wave /
set_property needs_save false [current_wave_config]
} else {
send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console."
}
}
run -all
quit
@@ -0,0 +1,212 @@
#!/bin/bash -f
#*********************************************************************************************************
# Vivado (TM) v2019.1.3 (64-bit)
#
# Filename : cmpy_18x8.sh
# Simulator : Xilinx Vivado Simulator
# Description : Simulation script for compiling, elaborating and verifying the project source files.
# The script will automatically create the design libraries sub-directories in the run
# directory, add the library logical mappings in the simulator setup file, create default
# 'do/prj' file, execute compilation, elaboration and simulation steps.
#
# Generated by Vivado on Sat Mar 18 23:15:09 +0800 2023
# SW Build 2644227 on Wed Sep 4 09:45:24 MDT 2019
#
# Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
#
# usage: cmpy_18x8.sh [-help]
# usage: cmpy_18x8.sh [-lib_map_path]
# usage: cmpy_18x8.sh [-noclean_files]
# usage: cmpy_18x8.sh [-reset_run]
#
#*********************************************************************************************************
# Command line options
xv_boost_lib_path=C:/Xilinx/Vivado/2019.1/tps/boost_1_64_0
xvhdl_opts="--relax"
# Script info
echo -e "cmpy_18x8.sh - Script generated by export_simulation (Vivado v2019.1.3 (64-bit)-id)\n"
# Main steps
run()
{
check_args $# $1
setup $1 $2
compile
elaborate
simulate
}
# RUN_STEP: <compile>
compile()
{
# Compile design files
xvhdl $xvhdl_opts -prj vhdl.prj 2>&1 | tee compile.log
}
# RUN_STEP: <elaborate>
elaborate()
{
xelab --relax --debug typical --mt auto -L xbip_utils_v3_0_10 -L axi_utils_v2_0_6 -L xbip_pipe_v3_0_6 -L xbip_bram18k_v3_0_6 -L mult_gen_v12_0_15 -L cmpy_v6_0_17 -L xil_defaultlib -L secureip -L xpm --snapshot cmpy_18x8 xil_defaultlib.cmpy_18x8 -log elaborate.log
}
# RUN_STEP: <simulate>
simulate()
{
xsim cmpy_18x8 -key {Behavioral:sim_1:Functional:cmpy_18x8} -tclbatch cmd.tcl -log simulate.log
}
# STEP: setup
setup()
{
case $1 in
"-lib_map_path" )
if [[ ($2 == "") ]]; then
echo -e "ERROR: Simulation library directory path not specified (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
copy_setup_file $2
;;
"-reset_run" )
reset_run
echo -e "INFO: Simulation run files deleted.\n"
exit 0
;;
"-noclean_files" )
# do not remove previous data
;;
* )
copy_setup_file $2
esac
# Add any setup/initialization commands here:-
# <user specific commands>
}
# Copy xsim.ini file
copy_setup_file()
{
file="xsim.ini"
lib_map_path="C:/Xilinx/Vivado/2019.1/data/xsim"
if [[ ($1 != "") ]]; then
lib_map_path="$1"
fi
if [[ ($lib_map_path != "") ]]; then
src_file="$lib_map_path/$file"
if [[ -e $src_file ]]; then
cp $src_file .
fi
# Map local design libraries to xsim.ini
map_local_libs
fi
}
# Map local design libraries
map_local_libs()
{
updated_mappings=()
local_mappings=()
# Local design libraries
local_libs=()
if [[ 0 == ${#local_libs[@]} ]]; then
return
fi
file="xsim.ini"
file_backup="xsim.ini.bak"
if [[ -e $file ]]; then
rm -f $file_backup
# Create a backup copy of the xsim.ini file
cp $file $file_backup
# Read libraries from backup file and search in local library collection
while read -r line
do
IN=$line
# Split mapping entry with '=' delimiter to fetch library name and mapping
read lib_name mapping <<<$(IFS="="; echo $IN)
# If local library found, then construct the local mapping and add to local mapping collection
if `echo ${local_libs[@]} | grep -wq $lib_name` ; then
line="$lib_name=xsim.dir/$lib_name"
local_mappings+=("$lib_name")
fi
# Add to updated library mapping collection
updated_mappings+=("$line")
done < "$file_backup"
# Append local libraries not found originally from xsim.ini
for (( i=0; i<${#local_libs[*]}; i++ )); do
lib_name="${local_libs[i]}"
if `echo ${local_mappings[@]} | grep -wvq $lib_name` ; then
line="$lib_name=xsim.dir/$lib_name"
updated_mappings+=("$line")
fi
done
# Write updated mappings in xsim.ini
rm -f $file
for (( i=0; i<${#updated_mappings[*]}; i++ )); do
lib_name="${updated_mappings[i]}"
echo $lib_name >> $file
done
else
for (( i=0; i<${#local_libs[*]}; i++ )); do
lib_name="${local_libs[i]}"
mapping="$lib_name=xsim.dir/$lib_name"
echo $mapping >> $file
done
fi
}
# Delete generated data from the previous run
reset_run()
{
files_to_remove=(xelab.pb xsim.jou xvhdl.log xvlog.log compile.log elaborate.log simulate.log xelab.log xsim.log run.log xvhdl.pb xvlog.pb cmpy_18x8.wdb xsim.dir)
for (( i=0; i<${#files_to_remove[*]}; i++ )); do
file="${files_to_remove[i]}"
if [[ -e $file ]]; then
rm -rf $file
fi
done
}
# Check command line arguments
check_args()
{
if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
echo -e "ERROR: Unknown option specified '$2' (type \"./cmpy_18x8.sh -help\" for more information)\n"
exit 1
fi
if [[ ($2 == "-help" || $2 == "-h") ]]; then
usage
fi
}
# Script usage
usage()
{
msg="Usage: cmpy_18x8.sh [-help]\n\
Usage: cmpy_18x8.sh [-lib_map_path]\n\
Usage: cmpy_18x8.sh [-reset_run]\n\
Usage: cmpy_18x8.sh [-noclean_files]\n\n\
[-help] -- Print help information for this script\n\n\
[-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
[-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
-noclean_files switch.\n\n\
[-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
echo -e $msg
exit 1
}
# Launch script
run $1 $2

Some files were not shown because too many files have changed in this diff Show More