You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5180 lines
172 KiB
VHDL

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

-- © IBM Corp. 2020
-- Licensed under the Apache License, Version 2.0 (the "License"), as modified by
-- the terms below; you may not use the files in this repository except in
-- compliance with the License as modified.
-- You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
--
-- Modified Terms:
--
-- 1) For the purpose of the patent license granted to you in Section 3 of the
-- License, the "Work" hereby includes implementations of the work of authorship
-- in physical form.
--
-- 2) Notwithstanding any terms to the contrary in the License, any licenses
-- necessary for implementation of the Work that are available from OpenPOWER
-- via the Power ISA End User License Agreement (EULA) are explicitly excluded
-- hereunder, and may be obtained from OpenPOWER under the terms and conditions
-- of the EULA.
--
-- Unless required by applicable law or agreed to in writing, the reference design
-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
-- for the specific language governing permissions and limitations under the License.
--
-- Additional rights, including the ability to physically implement a softcore that
-- is compliant with the required sections of the Power ISA Specification, are
-- available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
-- obtained (along with the Power ISA) here: https://openpowerfoundation.org.
--***************************************************************************
-- Copyright 2020 International Business Machines
--
-- Licensed under the Apache License, Version 2.0 (the “License”);
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- The patent license granted to you in Section 3 of the License, as applied
-- to the “Work,” hereby includes implementations of the Work in physical form.
--
-- Unless required by applicable law or agreed to in writing, the reference design
-- distributed under the License is distributed on an “AS IS” BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
--***************************************************************************
library ibm,ieee ;
use ieee.std_logic_1164.all ;
use ibm.std_ulogic_support.all;
package std_ulogic_function_support is
-- Subtypes used for constraining return values in package
subtype std_return_2 is std_ulogic_vector(0 to 1);
subtype std_return_4 is std_ulogic_vector(0 to 3);
subtype std_return_8 is std_ulogic_vector(0 to 7);
subtype std_return_16 is std_ulogic_vector(0 to 15);
subtype std_return_32 is std_ulogic_vector(0 to 31);
subtype std_return_64 is std_ulogic_vector(0 to 63);
-- Test Case Evaluation Attributes
-- These attributes are used to control the generation of TCE tests
-- within the VHDL code.
-- Valid on PORT, SIGNAL and LABEL .
-- Used to turn task model generation on or off. The attribute is applied
-- to a label. If on a block it turns off generation for the whole block.
-- If on a statement it is for that statement alone.
-- The string specifies which task statement alone.
-- attribute TCE_ON of : label is "T,LTP,STP,DLTP,LST,STC,ASSRT,CMBN | ALL" ;
attribute tce_on : string;
attribute tce_off : string;
attribute tce_last : string;
attribute tce_reset : string;
attribute tce_all_off : string;
attribute tce_ignore : string;
-- The string specifies which task statement alone.
attribute tce_assertion : string;
attribute tce_combination : string;
attribute tce_seqcond : string;
-- Global Signals
signal audit_bit_dump : std_ulogic ;
signal assertion_summary : boolean ;
signal assertion_clock : std_ulogic ;
-- Synopsys translate_off
component assertion
generic( counted : boolean := false;
Delay : natural := 0;
Duration : natural := 0);
port(
assert_in : in std_ulogic ;
sample : in std_ulogic ;
assert_out : out std_ulogic
);
end component;
-- Synopsys translate_on
-- Function Declarations and Attributes
-- Gate Function
function gate
(in0 : std_ulogic_vector;
cond : std_ulogic )
return std_ulogic_vector ;
-- Synopsys translate_off
attribute btr_name of gate : function is "AND" ;
attribute recursive_synthesis of gate : function is 1 ;
attribute pin_bit_information of gate : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
3 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Dot Functions
function dot_and
(in0 : std_ulogic_vector )
return std_ulogic ;
-- Synopsys translate_off
attribute btr_name of dot_and : function is "VHDL-DOTA" ;
attribute recursive_synthesis of dot_and : function is 1 ;
attribute pin_bit_information of dot_and : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function dot_or
(in0 : std_ulogic_vector )
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of dot_or : function is "VHDL-DOTO" ;
attribute recursive_synthesis of dot_or : function is 1 ;
attribute pin_bit_information of dot_or : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function clock_tree_dot
(in0 : std_ulogic_vector )
return std_ulogic ;
function clock_tree_dot
(in0 : bit_vector )
return bit ;
-- Synopsys translate_off
attribute btr_name of clock_tree_dot : function is "VHDL-CDOT" ;
attribute recursive_synthesis of clock_tree_dot : function is 1 ;
attribute pin_bit_information of clock_tree_dot : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
-- Generic Terminator
procedure terminator
(in0 : in std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
);
procedure terminator
(in0 : in std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
);
-- synopsys translate_off
attribute btr_name of terminator : procedure is "TERMINATOR";
attribute recursive_synthesis of terminator : procedure is 1 ;
attribute pin_bit_information of terminator : procedure is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "));
-- Synopsys translate_on
-- Generic Delay
function delay
(in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function delay
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of delay : function is "IDENT" ;
attribute recursive_synthesis of delay : function is 1 ;
attribute block_data of delay : function is
"SUB_FUNC=/DELAY/LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of delay : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Generic Buffer
function buff
(in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function buff
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of buff : function is "IDENT" ;
attribute recursive_synthesis of buff : function is 1 ;
attribute block_data of buff : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of buff : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Invert single bit
function invert
(in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- inverter vectored
function invert
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of invert : function is "NOT" ;
attribute recursive_synthesis of invert : function is 1 ;
attribute pin_bit_information of invert : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Compare single bit
function compare
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- compare multi-bit
function compare
(in0 : std_ulogic_vector;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of compare : function is "VHDL-COMPARE" ;
attribute recursive_synthesis of compare : function is 1 ;
attribute pin_bit_information of compare : function is
(1 => (" ","A0 ","INCR","PIN_BIT_SCALAR"),
2 => (" ","M0 ","INCR","PIN_BIT_SCALAR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","EQ ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
-- Parity Functions
-- General XOR_Tree Building Parity Function
function parity
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of parity : function is "XOR" ;
attribute recursive_synthesis of parity : function is 1 ;
attribute pin_bit_information of parity : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function parity_map
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of parity_map : function is "XOR" ;
attribute recursive_synthesis of parity_map : function is 1 ;
attribute block_data of parity_map : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of parity_map : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
-- Parity gneration/checking functions
function parity_gen_odd
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of parity_gen_odd : function is "XNOR" ;
attribute recursive_synthesis of parity_gen_odd : function is 1;
attribute pin_bit_information of parity_gen_odd : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function parity_gen_even
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic ;
-- Synopsys translate_off
attribute btr_name of parity_gen_even : function is "XOR" ;
attribute recursive_synthesis of parity_gen_even : function is 1;
attribute pin_bit_information of parity_gen_even : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function is_parity_odd
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic ;
-- Synopsys translate_off
attribute btr_name of is_parity_odd : function is "XOR" ;
attribute recursive_synthesis of is_parity_odd : function is 1;
attribute pin_bit_information of is_parity_odd : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function is_parity_even
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic ;
-- Synopsys translate_off
attribute btr_name of is_parity_even : function is "XNOR" ;
attribute recursive_synthesis of is_parity_even : function is 1;
attribute pin_bit_information of is_parity_even : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
-- Full Adder
procedure full_add
(add_1 : in std_ulogic ;
add_2 : in std_ulogic ;
cryin : in std_ulogic ;
signal sum : out std_ulogic ;
signal carry : out std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
);
procedure full_add
(add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
cryin : in std_ulogic_vector ;
signal sum : out std_ulogic_vector ;
signal carry : out std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
);
-- synopsys translate_off
attribute btr_name of full_add : procedure is "VHDL-FA";
attribute recursive_synthesis of full_add : procedure is 1 ;
attribute pin_bit_information of full_add : procedure is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","CIN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","SUM ","SAME","PIN_BIT_VECTOR"),
5 => (" ","COUT ","SAME","PIN_BIT_VECTOR"),
6 => (" ","PASS "," "," "),
7 => (" ","PASS "," "," "));
-- Synopsys translate_on
-- Ripple Adder function
procedure ripple_adder
(add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
signal sum : out std_ulogic_vector ;
signal carry : out std_ulogic ) ;
procedure ripple_adder
(add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
signal sum : out std_ulogic_vector );
-- Generic Tie Blocks
function tie_0
-- synopsys translate_off
(btr : in string :=""
;blkdata : in string :=""
)
-- synopsys translate_on
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of tie_0 : function is "VHDL-TIDN" ;
attribute recursive_synthesis of tie_0 : function is 1 ;
attribute block_data of tie_0 : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of tie_0 : function is
(1 => (" ","PASS "," "," "),
2 => (" ","PASS "," "," "),
3 => (" ","ZERO ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function vector_tie_0
(width : integer := 1
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of vector_tie_0 : function is "VHDL-TIDN" ;
attribute recursive_synthesis of vector_tie_0 : function is 1 ;
attribute block_data of vector_tie_0 : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of vector_tie_0 : function is
(1 => (" ","IGNR "," "," "),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","ZERO ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function tie_1
-- synopsys translate_off
(btr : in string :=""
;blkdata : in string :=""
)
-- synopsys translate_on
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of tie_1 : function is "VHDL-TIUP" ;
attribute recursive_synthesis of tie_1 : function is 1 ;
attribute block_data of tie_1 : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of tie_1 : function is
(1 => (" ","PASS "," "," "),
2 => (" ","PASS "," "," "),
3 => (" ","ONE ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function vector_tie_1
(width : integer := 1
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of vector_tie_1 : function is "VHDL-TIUP" ;
attribute recursive_synthesis of vector_tie_1 : function is 1 ;
attribute block_data of vector_tie_1 : function is
"LOGIC_STYLE=/DIRECT/" ;
attribute pin_bit_information of vector_tie_1 : function is
(1 => (" ","IGNR "," "," "),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","ONE ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function reverse
(arg: std_ulogic_vector)
return std_ulogic_vector ;
function and_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of and_reduce : function is "AND" ;
attribute recursive_synthesis of and_reduce : function is 1 ;
attribute pin_bit_information of and_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function or_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of or_reduce : function is "OR" ;
attribute recursive_synthesis of or_reduce : function is 1 ;
attribute pin_bit_information of or_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function nand_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of nand_reduce : function is "NAND" ;
attribute recursive_synthesis of nand_reduce : function is 1 ;
attribute pin_bit_information of nand_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function nor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of nor_reduce : function is "NOR" ;
attribute recursive_synthesis of nor_reduce : function is 1 ;
attribute pin_bit_information of nor_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function xor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of xor_reduce : function is "XOR" ;
attribute recursive_synthesis of xor_reduce : function is 1 ;
attribute pin_bit_information of xor_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function xnor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
-- synopsys translate_off
attribute btr_name of xnor_reduce : function is "XNOR" ;
attribute recursive_synthesis of xnor_reduce : function is 1 ;
attribute pin_bit_information of xnor_reduce : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","OUT ","SAME","PIN_BIT_SCALAR"));
-- Synopsys translate_on
-- Vector of gating bits gating a single vector of data bits
function gate_and
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
function gate_and
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_and
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_and : function is "AND" ;
attribute recursive_synthesis of gate_and : function is 1 ;
attribute pin_bit_information of gate_and : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function gate_or
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
function gate_or
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_or
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_or : function is "OR" ;
attribute recursive_synthesis of gate_or : function is 1 ;
attribute pin_bit_information of gate_or : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function gate_nand
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
function gate_nand
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_nand
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_nand : function is "NAND" ;
attribute recursive_synthesis of gate_nand : function is 1 ;
attribute pin_bit_information of gate_nand : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function gate_nor
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
function gate_nor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_nor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_nor : function is "NOR" ;
attribute recursive_synthesis of gate_nor : function is 1 ;
attribute pin_bit_information of gate_nor : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function gate_xor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_xor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_xor : function is "XOR" ;
attribute recursive_synthesis of gate_xor : function is 1 ;
attribute pin_bit_information of gate_xor : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function gate_xnor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic ;
function gate_xnor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of gate_xnor : function is "XNOR" ;
attribute recursive_synthesis of gate_xnor : function is 1 ;
attribute pin_bit_information of gate_xnor : function is
(1 => (" ","IN ","SAME","PIN_BIT_SCALAR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 2 input functions
-- Single bit case
-- Multiple vectors logically <gate>ed bitwise
function and_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_2 : function is "AND" ;
attribute recursive_synthesis of and_2 : function is 1 ;
attribute pin_bit_information of and_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_2 : function is "OR" ;
attribute recursive_synthesis of or_2 : function is 1 ;
attribute pin_bit_information of or_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_2 : function is "NAND" ;
attribute recursive_synthesis of nand_2 : function is 1 ;
attribute pin_bit_information of nand_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_2 : function is "NOR" ;
attribute recursive_synthesis of nor_2 : function is 1 ;
attribute pin_bit_information of nor_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function xor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function xor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of xor_2 : function is "XOR" ;
attribute recursive_synthesis of xor_2 : function is 1 ;
attribute pin_bit_information of xor_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function xnor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function xnor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of xnor_2 : function is "XNOR" ;
attribute recursive_synthesis of xnor_2 : function is 1 ;
attribute pin_bit_information of xnor_2 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","PASS "," "," "),
4 => (" ","PASS "," "," "),
5 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 3 input functions
-- Single bit case
function and_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
-- multiple vectors logically <gate>ed bitwise
function and_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_3 : function is "AND" ;
attribute recursive_synthesis of and_3 : function is 1 ;
attribute pin_bit_information of and_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_3 : function is "OR" ;
attribute recursive_synthesis of or_3 : function is 1 ;
attribute pin_bit_information of or_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_3 : function is "NAND" ;
attribute recursive_synthesis of nand_3 : function is 1 ;
attribute pin_bit_information of nand_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_3 : function is "NOR" ;
attribute recursive_synthesis of nor_3 : function is 1 ;
attribute pin_bit_information of nor_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function xor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function xor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of xor_3 : function is "XOR" ;
attribute recursive_synthesis of xor_3 : function is 1 ;
attribute pin_bit_information of xor_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function xnor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function xnor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of xnor_3 : function is "XNOR" ;
attribute recursive_synthesis of xnor_3 : function is 1 ;
attribute pin_bit_information of xnor_3 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","PASS "," "," "),
5 => (" ","PASS "," "," "),
6 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 4 input functions
-- Single bit case
function and_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_4 : function is "AND" ;
attribute recursive_synthesis of and_4 : function is 1 ;
attribute pin_bit_information of and_4 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","PASS "," "," "),
6 => (" ","PASS "," "," "),
7 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_4 : function is "OR" ;
attribute recursive_synthesis of or_4 : function is 1 ;
attribute pin_bit_information of or_4 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","PASS "," "," "),
6 => (" ","PASS "," "," "),
7 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_4 : function is "NAND" ;
attribute recursive_synthesis of nand_4 : function is 1 ;
attribute pin_bit_information of nand_4 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","PASS "," "," "),
6 => (" ","PASS "," "," "),
7 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_4 : function is "NOR" ;
attribute recursive_synthesis of nor_4 : function is 1 ;
attribute pin_bit_information of nor_4 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","PASS "," "," "),
6 => (" ","PASS "," "," "),
7 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 5 input functions
-- Single bit case
-- Multiple vectors logically <gate>ed bitwise
function and_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_5 : function is "AND" ;
attribute recursive_synthesis of and_5 : function is 1 ;
attribute pin_bit_information of and_5 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","PASS "," "," "),
7 => (" ","PASS "," "," "),
8 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_5 : function is "OR" ;
attribute recursive_synthesis of or_5 : function is 1 ;
attribute pin_bit_information of or_5 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","PASS "," "," "),
7 => (" ","PASS "," "," "),
8 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_5 : function is "NAND" ;
attribute recursive_synthesis of nand_5 : function is 1 ;
attribute pin_bit_information of nand_5 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","PASS "," "," "),
7 => (" ","PASS "," "," "),
8 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_5 : function is "NOR" ;
attribute recursive_synthesis of nor_5 : function is 1 ;
attribute pin_bit_information of nor_5 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","PASS "," "," "),
7 => (" ","PASS "," "," "),
8 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 6 input functions
-- Single bit case
function and_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_6 : function is "AND" ;
attribute recursive_synthesis of and_6 : function is 1 ;
attribute pin_bit_information of and_6 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","PASS "," "," "),
8 => (" ","PASS "," "," "),
9 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_6 : function is "OR" ;
attribute recursive_synthesis of or_6 : function is 1 ;
attribute pin_bit_information of or_6 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","PASS "," "," "),
8 => (" ","PASS "," "," "),
9 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_6 : function is "NAND" ;
attribute recursive_synthesis of nand_6 : function is 1 ;
attribute pin_bit_information of nand_6 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","PASS "," "," "),
8 => (" ","PASS "," "," "),
9 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_6 : function is "NOR" ;
attribute recursive_synthesis of nor_6 : function is 1 ;
attribute pin_bit_information of nor_6 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","PASS "," "," "),
8 => (" ","PASS "," "," "),
9 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 7 input functions
-- Single bit case
-- Multiple vectors logically <gate>ed bitwise
function and_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_7 : function is "AND" ;
attribute recursive_synthesis of and_7 : function is 1 ;
attribute pin_bit_information of and_7 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","PASS "," "," "),
9 => (" ","PASS "," "," "),
10 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_7 : function is "OR" ;
attribute recursive_synthesis of or_7 : function is 1 ;
attribute pin_bit_information of or_7 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","PASS "," "," "),
9 => (" ","PASS "," "," "),
10 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_7 : function is "NAND" ;
attribute recursive_synthesis of nand_7 : function is 1 ;
attribute pin_bit_information of nand_7 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","PASS "," "," "),
9 => (" ","PASS "," "," "),
10 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_7 : function is "NOR" ;
attribute recursive_synthesis of nor_7 : function is 1 ;
attribute pin_bit_information of nor_7 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","PASS "," "," "),
9 => (" ","PASS "," "," "),
10 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
-- Vectored primitive <gate> 8 input functions
-- Single bit case
-- Multiple vectors logically <gate>ed bitwise
function and_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function and_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of and_8 : function is "AND" ;
attribute recursive_synthesis of and_8 : function is 1 ;
attribute pin_bit_information of and_8 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
9 => (" ","PASS "," "," "),
10 => (" ","PASS "," "," "),
11 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function or_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function or_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of or_8 : function is "OR" ;
attribute recursive_synthesis of or_8 : function is 1 ;
attribute pin_bit_information of or_8 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
9 => (" ","PASS "," "," "),
10 => (" ","PASS "," "," "),
11 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nand_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nand_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nand_8 : function is "NAND" ;
attribute recursive_synthesis of nand_8 : function is 1 ;
attribute pin_bit_information of nand_8 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
9 => (" ","PASS "," "," "),
10 => (" ","PASS "," "," "),
11 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function nor_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic ;
function nor_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector ;
-- synopsys translate_off
attribute btr_name of nor_8 : function is "NOR" ;
attribute recursive_synthesis of nor_8 : function is 1 ;
attribute pin_bit_information of nor_8 : function is
(1 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
2 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
3 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
4 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
5 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
6 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
7 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
8 => (" ","IN ","SAME","PIN_BIT_VECTOR"),
9 => (" ","PASS "," "," "),
10 => (" ","PASS "," "," "),
11 => (" ","OUT ","SAME","PIN_BIT_VECTOR"));
-- Synopsys translate_on
function decode( code : std_ulogic_vector ) return std_ulogic_vector;
-- Synopsys translate_off
attribute functionality of decode: function is "DECODER";
-- Synopsys translate_on
function decode_2to4
(code : std_ulogic_vector(0 to 1)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_4 ;
-- synopsys translate_off
attribute btr_name of decode_2to4 : function is "VHDL-DECODE";
attribute recursive_synthesis of decode_2to4 : function is 1 ;
attribute pin_bit_information of decode_2to4 : function is
(1 => (" ","D1 ","DECR","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","F0 ","INCR","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function decode_3to8
(code : std_ulogic_vector(0 to 2)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_8 ;
-- synopsys translate_off
attribute btr_name of decode_3to8 : function is "VHDL-DECODE";
attribute recursive_synthesis of decode_3to8 : function is 1 ;
attribute pin_bit_information of decode_3to8 : function is
(1 => (" ","D2 ","DECR","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","F0 ","INCR","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function decode_4to16
(code : std_ulogic_vector(0 to 3)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_16 ;
-- synopsys translate_off
attribute btr_name of decode_4to16 : function is "VHDL-DECODE";
attribute recursive_synthesis of decode_4to16 : function is 1 ;
attribute pin_bit_information of decode_4to16 : function is
(1 => (" ","D3 ","DECR","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","F0 ","INCR","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function decode_5to32
(code : std_ulogic_vector(0 to 4)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_32 ;
-- synopsys translate_off
attribute btr_name of decode_5to32 : function is "VHDL-DECODE";
attribute recursive_synthesis of decode_5to32 : function is 1 ;
attribute pin_bit_information of decode_5to32 : function is
(1 => (" ","D4 ","DECR","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","F0 ","INCR","PIN_BIT_SCALAR"));
-- Synopsys translate_on
function decode_6to64
(code : std_ulogic_vector(0 to 5)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_64 ;
-- synopsys translate_off
attribute btr_name of decode_6to64 : function is "VHDL-DECODE";
attribute recursive_synthesis of decode_6to64 : function is 1 ;
attribute pin_bit_information of decode_6to64 : function is
(1 => (" ","D5 ","DECR","PIN_BIT_SCALAR"),
2 => (" ","PASS "," "," "),
3 => (" ","PASS "," "," "),
4 => (" ","F0 ","INCR","PIN_BIT_SCALAR"));
-- Synopsys translate_on
end std_ulogic_function_support;
package body std_ulogic_function_support is
-- Function Declarations and Attributes
-- Gate Function
function gate
(in0 : std_ulogic_vector;
cond : std_ulogic )
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 and vec_length'(0 to in0'length-1 => cond) ;
return result;
end gate;
-- This function everses the range direction.
function reverse (arg: std_ulogic_vector)
return std_ulogic_vector
is
variable d, result : std_ulogic_vector(0 to arg'length-1);
begin
d := arg;
for i in 0 to d'length-1 loop
result(result'right - i) := d(i);
end loop;
return result;
end reverse;
-- Generic Terminator
procedure terminator
(in0 : in std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
begin
result := in0 ;
end terminator ;
procedure terminator
(in0 : in std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1);
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 ;
end terminator ;
-- Generic Delay
function delay
(in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
-- initialize variable attribute values
result := in0;
return result;
end delay ;
function delay
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0;
return result;
end delay ;
function buff
(in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0;
return result;
end buff ;
function buff
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0;
return result;
end buff ;
-- inverter single bit
function invert
(in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not in0;
return result;
end invert ;
-- inverter vectored
function invert
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not in0;
return result;
end invert ;
-- Comparator
function compare
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 = in1 ;
return result;
end compare ;
-- comparator mult-bit
function compare
(in0 : std_ulogic_vector;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 = in1 ;
return result;
end compare ;
-- General XOR_Tree Building Parity Function
function parity
(In0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return Std_uLogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return result;
end parity ;
-- Specific Size Parity Block Map Function
function parity_map
(In0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return result;
end parity_map ;
-- Parity gneration/checking functions
function parity_gen_odd
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return not result;
end parity_gen_odd ;
function parity_gen_even
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return result;
end parity_gen_even ;
function is_parity_odd
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return result;
end is_parity_odd ;
function is_parity_even
(in0 : std_ulogic_vector
-- Synopsys translate_off
;btr : in String :=""
;blkdata : in String :=""
-- Synopsys translate_on
)
return std_ulogic
is
-- Synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- Synopsys translate_on
variable result : std_ulogic;
begin
result := in0(in0'low);
for i in in0'low+1 to in0'high loop
result := in0(i) xor result ;
end loop;
return not result;
end is_parity_even ;
function and_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0(in0'left) ;
for i in in0'range loop
result := result and in0(i);
end loop;
result := result ;
return result;
end and_reduce ;
function or_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
variable block_data : string(1 to 1) ;
-- synopsys translate_off
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0(in0'left) ;
for i in in0'range loop
result := result or in0(i);
end loop;
result := result ;
return result;
end or_reduce ;
function nand_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0(in0'left) ;
for i in in0'range loop
result := result and in0(i);
end loop;
result := not result ;
return result;
end nand_reduce ;
function nor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0(in0'left) ;
for i in in0'range loop
result := result or in0(i);
end loop;
result := not result ;
return result;
end nor_reduce ;
function xor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := '0' ;
for i in in0'range loop
result := result xor in0(i);
end loop;
result := result ;
return result ;
end xor_reduce ;
function xnor_reduce
(in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := '0' ;
for i in in0'range loop
result := result xor in0(i);
end loop;
result := not result ;
return result ;
end xnor_reduce ;
function gate_and
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate and in0 ;
return result;
end gate_and;
function gate_and
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 and vec_length'(0 to in0'length-1 => gate) ;
return result;
end gate_and;
function gate_or
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate or in0 ;
return result;
end gate_or;
function gate_or
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 or vec_length'(0 to in0'length-1 => gate) ;
return result;
end gate_or;
function gate_nand
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate nand in0 ;
return result;
end gate_nand;
function gate_nand
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 nand vec_length'( 0 to in0'length-1 => gate );
return result;
end gate_nand;
function gate_nor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate nor in0 ;
return result;
end gate_nor;
function gate_nor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 nor vec_length'(0 to in0'length-1 => gate) ;
return result;
end gate_nor;
function gate_xor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate xor in0 ;
return result;
end gate_xor;
function gate_xor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := in0 xor vec_length'(0 to in0'length-1 => gate) ;
return result;
end gate_xor;
function gate_xnor
(gate : std_ulogic ;
in0 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := gate = in0 ;
return result;
end gate_xnor;
function gate_xnor
(gate : std_ulogic ;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector (0 to in0'length-1);
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
result := not( in0 xor vec_length'(0 to in0'length-1 => gate) ) ;
return result;
end gate_xnor;
function gate_and
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
variable gate_int : std_ulogic ;
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
gate_int := gate(gate'low) ;
for i in gate'low+1 to gate'high loop
gate_int := gate_int and gate(i);
end loop;
result := in0 and vec_length'(0 to in0'length-1 => gate_int) ;
return result ;
end gate_and;
function gate_or
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
variable gate_int : std_ulogic ;
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
gate_int := gate(gate'low) ;
for i in gate'low+1 to gate'high loop
gate_int := gate_int or gate(i);
end loop;
result := in0 or vec_length'(0 to in0'length-1 => gate_int) ;
return result ;
end gate_or;
function gate_nand
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
variable gate_int : std_ulogic ;
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
gate_int := gate(gate'low) ;
for i in gate'low+1 to gate'high loop
gate_int := gate_int and gate(i);
end loop;
result := in0 and vec_length'(0 to in0'length-1 => gate_int) ;
result := not result ;
return result;
end gate_nand;
function gate_nor
(gate : std_ulogic_vector;
in0 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to in0'length-1);
variable gate_int : std_ulogic ;
subtype vec_length is std_ulogic_vector(0 to in0'length-1);
begin
gate_int := gate(gate'low) ;
for i in gate'low+1 to gate'high loop
gate_int := gate_int or gate(i);
end loop;
result := in0 or vec_length'(0 to in0'length-1 => gate_int) ;
result := not result ;
return result ;
end gate_nor;
function xor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 xor in1 ;
return result ;
end xor_2 ;
function xor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 xor in1;
return result ;
end xor_2 ;
function xor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := (in0 xor in1 xor in2) ;
return result ;
end xor_3 ;
function xor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 xor in1 xor in2 ;
return result ;
end xor_3 ;
function xnor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 xor in1 ) ;
return result ;
end xnor_2 ;
function xnor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 xor in1 ) ;
return result ;
end xnor_2 ;
function xnor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 xor in1 xor in2 ) ;
return result ;
end xnor_3 ;
function xnor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 xor in1 xor in2 ) ;
return result ;
end xnor_3 ;
function and_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 ;
return result ;
end and_2 ;
function and_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 ;
return result ;
end and_2 ;
function and_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 ;
return result ;
end and_3 ;
function and_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 ;
return result ;
end and_3 ;
function and_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 ;
return result ;
end and_4 ;
function and_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 ;
return result ;
end and_4 ;
function and_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 ;
return result ;
end and_5 ;
function and_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4;
return result ;
end and_5 ;
function and_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 ;
return result ;
end and_6 ;
function and_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 ;
return result ;
end and_6 ;
function and_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 and in6 ;
return result ;
end and_7 ;
function and_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 and in6 ;
return result ;
end and_7 ;
function and_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 and in6 and in7 ;
return result ;
end and_8 ;
function and_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
variable block_data : string(1 to 1) ;
-- synopsys translate_off
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 and in1 and in2 and in3 and in4 and in5 and in6 and in7 ;
return result ;
end and_8 ;
function or_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 ;
return result ;
end or_2 ;
function or_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 ;
return result ;
end or_2 ;
function or_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 ;
return result ;
end or_3 ;
function or_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 ;
return result ;
end or_3 ;
function or_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 ;
return result ;
end or_4 ;
function or_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 ;
return result ;
end or_4 ;
function or_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 ;
return result ;
end or_5 ;
function or_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 ;
return result ;
end or_5 ;
function or_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 ;
return result ;
end or_6 ;
function or_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 ;
return result ;
end or_6 ;
function or_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 or in6 ;
return result ;
end or_7 ;
function or_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 or in6 ;
return result ;
end or_7 ;
function or_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 or in6 or in7 ;
return result ;
end or_8 ;
function or_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := in0 or in1 or in2 or in3 or in4 or in5 or in6 or in7 ;
return result ;
end or_8 ;
function nand_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 ) ;
return result ;
end nand_2 ;
function nand_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 ) ;
return result ;
end nand_2 ;
function nand_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 ) ;
return result ;
end nand_3 ;
function nand_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 ) ;
return result ;
end nand_3 ;
function nand_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 ) ;
return result ;
end nand_4 ;
function nand_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 ) ;
return result ;
end nand_4 ;
function nand_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 ) ;
return result ;
end nand_5 ;
function nand_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 ) ;
return result ;
end nand_5 ;
function nand_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 ) ;
return result ;
end nand_6 ;
function nand_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 ) ;
return result ;
end nand_6 ;
function nand_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 and in6) ;
return result ;
end nand_7 ;
function nand_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 and in6) ;
return result ;
end nand_7 ;
function nand_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 and in6 and in7 ) ;
return result ;
end nand_8 ;
function nand_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 and in1 and in2 and in3 and in4 and in5 and in6 and in7 ) ;
return result ;
end nand_8 ;
function nor_2
(in0 : std_ulogic ;
in1 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 ) ;
return result ;
end nor_2 ;
function nor_2
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 ) ;
return result ;
end nor_2 ;
function nor_3
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 ) ;
return result ;
end nor_3 ;
function nor_3
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 ) ;
return result ;
end nor_3 ;
function nor_4
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 ) ;
return result ;
end nor_4 ;
function nor_4
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 ) ;
return result ;
end nor_4 ;
function nor_5
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 ) ;
return result ;
end nor_5 ;
function nor_5
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 ) ;
return result ;
end nor_5 ;
function nor_6
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 ) ;
return result ;
end nor_6 ;
function nor_6
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 ) ;
return result ;
end nor_6 ;
function nor_7
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 or in6 ) ;
return result ;
end nor_7 ;
function nor_7
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 or in6 ) ;
return result ;
end nor_7 ;
function nor_8
(in0 : std_ulogic ;
in1 : std_ulogic ;
in2 : std_ulogic ;
in3 : std_ulogic ;
in4 : std_ulogic ;
in5 : std_ulogic ;
in6 : std_ulogic ;
in7 : std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 or in6 or in7 ) ;
return result ;
end nor_8 ;
function nor_8
(in0 : std_ulogic_vector ;
in1 : std_ulogic_vector ;
in2 : std_ulogic_vector ;
in3 : std_ulogic_vector ;
in4 : std_ulogic_vector ;
in5 : std_ulogic_vector ;
in6 : std_ulogic_vector ;
in7 : std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector (0 to in0'length-1);
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := not( in0 or in1 or in2 or in3 or in4 or in5 or in6 or in7 ) ;
return result ;
end nor_8 ;
function tie_0
-- synopsys translate_off
(btr : in string :="";
blkdata : in string :=""
)
-- synopsys translate_on
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := '0';
return result;
end tie_0;
function vector_tie_0
(width : integer := 1
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector(0 to width-1) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
for i in 0 to width-1 loop
result(i) := '0';
end loop;
return result;
end vector_tie_0;
function tie_1
-- synopsys translate_off
(btr : in string :=""
;blkdata : in string :=""
)
-- synopsys translate_on
return std_ulogic
is
variable result : std_ulogic ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
result := '1';
return result;
end tie_1;
function vector_tie_1
(width : integer := 1
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_ulogic_vector
is
variable result : std_ulogic_vector(0 to width-1) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
for i in 0 to width-1 loop
result(i) := '1';
end loop;
return result;
end vector_tie_1;
function decode( code : std_ulogic_vector ) return std_ulogic_vector is
variable result : std_ulogic_vector(0 to (2**(code'length)-1)) := (others => '0');
begin
result := (others => '0');
result( tconv( code ) ) := '1';
for i in code'low to code'high loop
if code(i) = 'U' then
result := (others => 'U');
end if;
end loop;
for i in code'low to code'high loop
if code(i) = 'X' then
result := (others => 'X');
end if;
end loop;
return result;
end decode;
function decode_2to4
(code : std_ulogic_vector(0 to 1)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_4
is
variable result : std_ulogic_vector(0 to 3) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
case code is
when "00" => result := "1000";
when "01" => result := "0100";
when "10" => result := "0010";
when "11" => result := "0001";
when others => result := "XXXX";
end case;
return result;
end decode_2to4;
function decode_3to8
(code : std_ulogic_vector(0 to 2)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_8
is
variable result : std_ulogic_vector(0 to 7) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
case code is
when "000" => result := "10000000";
when "001" => result := "01000000";
when "010" => result := "00100000";
when "011" => result := "00010000";
when "100" => result := "00001000";
when "101" => result := "00000100";
when "110" => result := "00000010";
when "111" => result := "00000001";
when others => result := "XXXXXXXX";
end case;
return result;
end decode_3to8;
function decode_4to16
(code : std_ulogic_vector(0 to 3)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_16
is
variable result : std_ulogic_vector(0 to 15) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
case code is
when "0000" => result := "1000000000000000";
when "0001" => result := "0100000000000000";
when "0010" => result := "0010000000000000";
when "0011" => result := "0001000000000000";
when "0100" => result := "0000100000000000";
when "0101" => result := "0000010000000000";
when "0110" => result := "0000001000000000";
when "0111" => result := "0000000100000000";
when "1000" => result := "0000000010000000";
when "1001" => result := "0000000001000000";
when "1010" => result := "0000000000100000";
when "1011" => result := "0000000000010000";
when "1100" => result := "0000000000001000";
when "1101" => result := "0000000000000100";
when "1110" => result := "0000000000000010";
when "1111" => result := "0000000000000001";
when others => result := "XXXXXXXXXXXXXXXX";
end case;
return result;
end decode_4to16;
function decode_5to32
(code : std_ulogic_vector(0 to 4)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_32
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to 31) ;
begin
case code is
when "00000" => result := "10000000000000000000000000000000";
when "00001" => result := "01000000000000000000000000000000";
when "00010" => result := "00100000000000000000000000000000";
when "00011" => result := "00010000000000000000000000000000";
when "00100" => result := "00001000000000000000000000000000";
when "00101" => result := "00000100000000000000000000000000";
when "00110" => result := "00000010000000000000000000000000";
when "00111" => result := "00000001000000000000000000000000";
when "01000" => result := "00000000100000000000000000000000";
when "01001" => result := "00000000010000000000000000000000";
when "01010" => result := "00000000001000000000000000000000";
when "01011" => result := "00000000000100000000000000000000";
when "01100" => result := "00000000000010000000000000000000";
when "01101" => result := "00000000000001000000000000000000";
when "01110" => result := "00000000000000100000000000000000";
when "01111" => result := "00000000000000010000000000000000";
when "10000" => result := "00000000000000001000000000000000";
when "10001" => result := "00000000000000000100000000000000";
when "10010" => result := "00000000000000000010000000000000";
when "10011" => result := "00000000000000000001000000000000";
when "10100" => result := "00000000000000000000100000000000";
when "10101" => result := "00000000000000000000010000000000";
when "10110" => result := "00000000000000000000001000000000";
when "10111" => result := "00000000000000000000000100000000";
when "11000" => result := "00000000000000000000000010000000";
when "11001" => result := "00000000000000000000000001000000";
when "11010" => result := "00000000000000000000000000100000";
when "11011" => result := "00000000000000000000000000010000";
when "11100" => result := "00000000000000000000000000001000";
when "11101" => result := "00000000000000000000000000000100";
when "11110" => result := "00000000000000000000000000000010";
when "11111" => result := "00000000000000000000000000000001";
when others => result := "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
end case;
return result;
end decode_5to32;
function decode_6to64
(code : std_ulogic_vector(0 to 5)
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
return std_return_64
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
variable result : std_ulogic_vector(0 to 63) ;
begin
case code is
when "000000" => result := "1000000000000000000000000000000000000000000000000000000000000000";
when "000001" => result := "0100000000000000000000000000000000000000000000000000000000000000";
when "000010" => result := "0010000000000000000000000000000000000000000000000000000000000000";
when "000011" => result := "0001000000000000000000000000000000000000000000000000000000000000";
when "000100" => result := "0000100000000000000000000000000000000000000000000000000000000000";
when "000101" => result := "0000010000000000000000000000000000000000000000000000000000000000";
when "000110" => result := "0000001000000000000000000000000000000000000000000000000000000000";
when "000111" => result := "0000000100000000000000000000000000000000000000000000000000000000";
when "001000" => result := "0000000010000000000000000000000000000000000000000000000000000000";
when "001001" => result := "0000000001000000000000000000000000000000000000000000000000000000";
when "001010" => result := "0000000000100000000000000000000000000000000000000000000000000000";
when "001011" => result := "0000000000010000000000000000000000000000000000000000000000000000";
when "001100" => result := "0000000000001000000000000000000000000000000000000000000000000000";
when "001101" => result := "0000000000000100000000000000000000000000000000000000000000000000";
when "001110" => result := "0000000000000010000000000000000000000000000000000000000000000000";
when "001111" => result := "0000000000000001000000000000000000000000000000000000000000000000";
when "010000" => result := "0000000000000000100000000000000000000000000000000000000000000000";
when "010001" => result := "0000000000000000010000000000000000000000000000000000000000000000";
when "010010" => result := "0000000000000000001000000000000000000000000000000000000000000000";
when "010011" => result := "0000000000000000000100000000000000000000000000000000000000000000";
when "010100" => result := "0000000000000000000010000000000000000000000000000000000000000000";
when "010101" => result := "0000000000000000000001000000000000000000000000000000000000000000";
when "010110" => result := "0000000000000000000000100000000000000000000000000000000000000000";
when "010111" => result := "0000000000000000000000010000000000000000000000000000000000000000";
when "011000" => result := "0000000000000000000000001000000000000000000000000000000000000000";
when "011001" => result := "0000000000000000000000000100000000000000000000000000000000000000";
when "011010" => result := "0000000000000000000000000010000000000000000000000000000000000000";
when "011011" => result := "0000000000000000000000000001000000000000000000000000000000000000";
when "011100" => result := "0000000000000000000000000000100000000000000000000000000000000000";
when "011101" => result := "0000000000000000000000000000010000000000000000000000000000000000";
when "011110" => result := "0000000000000000000000000000001000000000000000000000000000000000";
when "011111" => result := "0000000000000000000000000000000100000000000000000000000000000000";
when "100000" => result := "0000000000000000000000000000000010000000000000000000000000000000";
when "100001" => result := "0000000000000000000000000000000001000000000000000000000000000000";
when "100010" => result := "0000000000000000000000000000000000100000000000000000000000000000";
when "100011" => result := "0000000000000000000000000000000000010000000000000000000000000000";
when "100100" => result := "0000000000000000000000000000000000001000000000000000000000000000";
when "100101" => result := "0000000000000000000000000000000000000100000000000000000000000000";
when "100110" => result := "0000000000000000000000000000000000000010000000000000000000000000";
when "100111" => result := "0000000000000000000000000000000000000001000000000000000000000000";
when "101000" => result := "0000000000000000000000000000000000000000100000000000000000000000";
when "101001" => result := "0000000000000000000000000000000000000000010000000000000000000000";
when "101010" => result := "0000000000000000000000000000000000000000001000000000000000000000";
when "101011" => result := "0000000000000000000000000000000000000000000100000000000000000000";
when "101100" => result := "0000000000000000000000000000000000000000000010000000000000000000";
when "101101" => result := "0000000000000000000000000000000000000000000001000000000000000000";
when "101110" => result := "0000000000000000000000000000000000000000000000100000000000000000";
when "101111" => result := "0000000000000000000000000000000000000000000000010000000000000000";
when "110000" => result := "0000000000000000000000000000000000000000000000001000000000000000";
when "110001" => result := "0000000000000000000000000000000000000000000000000100000000000000";
when "110010" => result := "0000000000000000000000000000000000000000000000000010000000000000";
when "110011" => result := "0000000000000000000000000000000000000000000000000001000000000000";
when "110100" => result := "0000000000000000000000000000000000000000000000000000100000000000";
when "110101" => result := "0000000000000000000000000000000000000000000000000000010000000000";
when "110110" => result := "0000000000000000000000000000000000000000000000000000001000000000";
when "110111" => result := "0000000000000000000000000000000000000000000000000000000100000000";
when "111000" => result := "0000000000000000000000000000000000000000000000000000000010000000";
when "111001" => result := "0000000000000000000000000000000000000000000000000000000001000000";
when "111010" => result := "0000000000000000000000000000000000000000000000000000000000100000";
when "111011" => result := "0000000000000000000000000000000000000000000000000000000000010000";
when "111100" => result := "0000000000000000000000000000000000000000000000000000000000001000";
when "111101" => result := "0000000000000000000000000000000000000000000000000000000000000100";
when "111110" => result := "0000000000000000000000000000000000000000000000000000000000000010";
when "111111" => result := "0000000000000000000000000000000000000000000000000000000000000001";
when others => result := "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
end case;
return result;
end decode_6to64;
-- full adder function
procedure full_add
(add_1 : in std_ulogic ;
add_2 : in std_ulogic ;
cryin : in std_ulogic ;
signal sum : out std_ulogic ;
signal carry : out std_ulogic
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
is
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
sum <= add_1 xor add_2 xor cryin;
carry <= (add_1 and add_2) or
(add_1 and cryin) or
(add_2 and cryin);
end full_add;
procedure full_add
(add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
cryin : in std_ulogic_vector ;
signal sum : out std_ulogic_vector ;
signal carry : out std_ulogic_vector
-- synopsys translate_off
;btr : in string :=""
;blkdata : in string :=""
-- synopsys translate_on
)
is
variable sum_result : std_ulogic_vector(sum'range) ;
variable carry_result : std_ulogic_vector(carry'range) ;
-- synopsys translate_off
variable block_data : string(1 to 1) ;
attribute dynamic_block_data of block_data : variable is
"CUE_BTR=/" & btr & "/" &
blkdata ;
-- synopsys translate_on
begin
-- synopsys translate_off
assert (add_1'length = add_2'length)
report "Addends of Full_Add are not the same length."
severity error;
assert (add_1'length = cryin'length) and (add_2'length = cryin'length)
report "Addends of Full_Add are not the same length as the CryIn."
severity error;
-- synopsys translate_on
sum_result := add_1 xor add_2 xor cryin;
carry_result := (add_1 and add_2) or
(add_1 and cryin) or
(add_2 and cryin);
sum <= sum_result ;
carry <= carry_result ;
end full_add;
-- Ripple adder function
procedure ripple_adder
( add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
signal sum : out std_ulogic_vector ;
signal carry : out std_ulogic )
is
-- Synopsys translate_off
attribute unroll_loop : boolean;
attribute unroll_loop of ripple : label is true;
-- Synopsys translate_on
variable a : std_ulogic_vector(1 to add_1'length) ;
variable b : std_ulogic_vector(1 to add_2'length) ;
variable c : std_ulogic_vector(0 to add_1'length) ;
variable result : std_ulogic_vector(1 to add_1'length) ;
begin
a := add_1;
b := add_2;
c(c'right) := '0' ;
ripple:for i in result'right downto 1 loop
c(i-1) := ( c(i) and a(i) ) or
( c(i) and b(i) ) or
( a(i) and b(i) ) ;
result(i) := a(i) xor b(i) xor c(i) ;
end loop ;
sum <= result ;
carry <= c(c'left) ;
end ripple_adder ;
procedure ripple_adder
( add_1 : in std_ulogic_vector ;
add_2 : in std_ulogic_vector ;
signal sum : out std_ulogic_vector )
is
-- Synopsys translate_off
attribute unroll_loop : boolean;
attribute unroll_loop of ripple : label is true;
-- Synopsys translate_on
variable a : std_ulogic_vector(1 to add_1'length) ;
variable b : std_ulogic_vector(1 to add_2'length) ;
variable c : std_ulogic_vector(1 to add_1'length) ;
variable result : std_ulogic_vector(1 to add_1'length) ;
begin
a := add_1;
b := add_2;
c(c'right) := '0' ;
ripple:for i in result'right downto 2 loop
c(i-1) := ( c(i) and a(i) ) or
( c(i) and b(i) ) or
( a(i) and b(i) ) ;
result(i) := a(i) xor b(i) xor c(i) ;
end loop ;
result(1) := a(1) xor b(1) xor c(1) ;
sum <= result ;
end ripple_adder ;
-- Dot Functions
function dot_and
(in0 : std_ulogic_vector )
return std_ulogic
is
variable result : std_ulogic ;
begin
result := '1';
for i in in0'range loop
result := in0(i) and result ;
end loop ;
return result;
end dot_and ;
function dot_or
(in0 : std_ulogic_vector )
return std_ulogic
is
variable result : std_ulogic ;
begin
result := '0';
for i in in0'range loop
result := in0(i) or result ;
end loop ;
return result;
end dot_or ;
function clock_tree_dot
(in0 : std_ulogic_vector )
return std_ulogic
is
variable result : std_ulogic ;
begin
result := '1';
for i in in0'range loop
result := in0(i) and result ;
end loop ;
return result;
end clock_tree_dot ;
function clock_tree_dot
(in0 : bit_vector )
return bit
is
variable result : bit ;
begin
result := '1';
for i in in0'range loop
result := in0(i) and result ;
end loop ;
return result;
end clock_tree_dot ;
end std_ulogic_function_support;