Warning, /frameworks/syntax-highlighting/autotests/reference/light52_muldiv.vhdl.ref is written in an unsupported language. File is not indexed.
0001 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0002 <Comment>-- light52_muldiv.vhdl -- Simple multiplier/divider module.</Comment><br/> 0003 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0004 <Comment>-- The 8051 mul and div instructions are both unsigned and operands are 8 bit.</Comment><br/> 0005 <Comment>--</Comment><br/> 0006 <Comment>-- This module implements the division as a sequential state machine which takes</Comment><br/> 0007 <Comment>-- 8 cycles to complete. </Comment><br/> 0008 <Comment>-- The multiplier can be implemented as sequential or as combinational, in which</Comment><br/> 0009 <Comment>-- case it will use a DSP block in those architectures that support it.</Comment><br/> 0010 <Comment>-- No attempt has been made to make this module generic or reusable.</Comment><br/> 0011 <Comment>--</Comment><br/> 0012 <Comment>-- If you want a combinational multiplier but don't want to waste a DSP block </Comment><br/> 0013 <Comment>-- in this module, you need to modify this file adding whatever synthesis </Comment><br/> 0014 <Comment>-- pragmas your tool of choice needs.</Comment><br/> 0015 <Comment>--</Comment><br/> 0016 <Comment>-- Note that unlike the division state machine, the combinational product logic</Comment><br/> 0017 <Comment>-- is always operating: when SEQUENTIAL_MULTIPLIER=true, prod_out equals </Comment><br/> 0018 <Comment>-- data_a * data_b with a latency of 1 clock cycle, and mul_ready is hardwired</Comment><br/> 0019 <Comment>-- to '1'.</Comment><br/> 0020 <Comment>--</Comment><br/> 0021 <Comment>-- </Comment><Alert Level 2>FIXME</Alert Level 2><Comment> explain division algorithm.</Comment><br/> 0022 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0023 <Comment>-- GENERICS:</Comment><br/> 0024 <Comment>-- </Comment><br/> 0025 <Comment>-- SEQUENTIAL_MULTIPLIER -- Sequential vs. combinational multiplier.</Comment><br/> 0026 <Comment>-- When true, a sequential implementation will be used for the multiplier, </Comment><br/> 0027 <Comment>-- which will usually save a lot of logic or a dedicated multiplier.</Comment><br/> 0028 <Comment>-- When false, a combinational registered multiplier will be used.</Comment><br/> 0029 <Comment>--</Comment><br/> 0030 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0031 <Comment>-- INTERFACE SIGNALS:</Comment><br/> 0032 <Comment>--</Comment><br/> 0033 <Comment>-- clk : Clock, active rising edge.</Comment><br/> 0034 <Comment>-- reset : Synchronous reset. Clears only the control registers not</Comment><br/> 0035 <Comment>-- visible to the programmer -- not the output registers.</Comment><br/> 0036 <Comment>-- </Comment><br/> 0037 <Comment>-- data_a : Numerator input, should be connected to the ACC register.</Comment><br/> 0038 <Comment>-- data_b : Denominator input, should be connected to the B register.</Comment><br/> 0039 <Comment>-- start : Assert for 1 cycle to start the division state machine</Comment><br/> 0040 <Comment>-- (and the product if SEQUENTIAL_MULTIPLIER=true);</Comment><br/> 0041 <Comment>-- </Comment><br/> 0042 <Comment>-- prod_out : Product output, valid only when mul_ready='1'.</Comment><br/> 0043 <Comment>-- quot_out : Quotient output, valid only when div_ready='1'.</Comment><br/> 0044 <Comment>-- rem_out : Remainder output, valid only when div_ready='1'.</Comment><br/> 0045 <Comment>-- div_ov_out : Division overflow flag, valid only when div_ready='1'.</Comment><br/> 0046 <Comment>-- mul_ov_out : Product overflow flag, valid only when mul_ready='1'.</Comment><br/> 0047 <Comment>-- </Comment><br/> 0048 <Comment>-- mul_ready : Asserted permanently if SEQUENTIAL_MULTIPLIER=false.</Comment><br/> 0049 <Comment>-- div_ready : Deasserted the cycle after start is asserted.</Comment><br/> 0050 <Comment>-- Asserted when the division has completed.</Comment><br/> 0051 <Comment>--</Comment><br/> 0052 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0053 <Comment>-- Copyright (C) 2012 Jose A. Ruiz</Comment><br/> 0054 <Comment>-- </Comment><br/> 0055 <Comment>-- This source file may be used and distributed without </Comment><br/> 0056 <Comment>-- restriction provided that this copyright statement is not </Comment><br/> 0057 <Comment>-- removed from the file and that any derivative work contains </Comment><br/> 0058 <Comment>-- the original copyright notice and the associated disclaimer. </Comment><br/> 0059 <Comment>-- </Comment><br/> 0060 <Comment>-- This source file is free software; you can redistribute it </Comment><br/> 0061 <Comment>-- and/or modify it under the terms of the GNU Lesser General </Comment><br/> 0062 <Comment>-- Public License as published by the Free Software Foundation; </Comment><br/> 0063 <Comment>-- either version 2.1 of the License, or (at your option) any </Comment><br/> 0064 <Comment>-- later version. </Comment><br/> 0065 <Comment>-- </Comment><br/> 0066 <Comment>-- This source is distributed in the hope that it will be </Comment><br/> 0067 <Comment>-- useful, but WITHOUT ANY WARRANTY; without even the implied </Comment><br/> 0068 <Comment>-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </Comment><br/> 0069 <Comment>-- PURPOSE. See the GNU Lesser General Public License for more </Comment><br/> 0070 <Comment>-- details. </Comment><br/> 0071 <Comment>-- </Comment><br/> 0072 <Comment>-- You should have received a copy of the GNU Lesser General </Comment><br/> 0073 <Comment>-- Public License along with this source; if not, download it </Comment><br/> 0074 <Comment>-- from http://www.opencores.org/lgpl.shtml</Comment><br/> 0075 <Comment>--------------------------------------------------------------------------------</Comment><br/> 0076 <Normal Text></Normal Text><br/> 0077 <Keyword>library</Keyword><Normal Text> ieee;</Normal Text><br/> 0078 <Keyword>use</Keyword><Normal Text> ieee</Normal Text><Operator>.</Operator><Normal Text>std_logic_1164</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text>;</Normal Text><br/> 0079 <Keyword>use</Keyword><Normal Text> ieee</Normal Text><Operator>.</Operator><Normal Text>numeric_std</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text>;</Normal Text><br/> 0080 <Normal Text></Normal Text><br/> 0081 <Keyword>use</Keyword><Normal Text> work</Normal Text><Operator>.</Operator><Normal Text>light52_pkg</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text>;</Normal Text><br/> 0082 <Keyword>use</Keyword><Normal Text> work</Normal Text><Operator>.</Operator><Normal Text>light52_ucode_pkg</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text>;</Normal Text><br/> 0083 <Normal Text></Normal Text><br/> 0084 <Control>entity</Control><Normal Text> </Normal Text><Name>light52_muldiv</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0085 <Normal Text> </Normal Text><Control>generic</Control><Normal Text> (</Normal Text><br/> 0086 <Normal Text> SEQUENTIAL_MULTIPLIER </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>boolean</Data Type><Normal Text> </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>false</Keyword><br/> 0087 <Normal Text> );</Normal Text><br/> 0088 <Normal Text> </Normal Text><Control>port</Control><Normal Text>(</Normal Text><br/> 0089 <Normal Text> clk </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0090 <Normal Text> reset </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0091 <Normal Text></Normal Text><br/> 0092 <Normal Text> data_a </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> t_byte;</Normal Text><br/> 0093 <Normal Text> data_b </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> t_byte;</Normal Text><br/> 0094 <Normal Text> start </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0095 <Normal Text></Normal Text><br/> 0096 <Normal Text> prod_out </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> t_word;</Normal Text><br/> 0097 <Normal Text> quot_out </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> t_byte;</Normal Text><br/> 0098 <Normal Text> rem_out </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> t_byte;</Normal Text><br/> 0099 <Normal Text> div_ov_out </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0100 <Normal Text> mul_ov_out </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0101 <Normal Text></Normal Text><br/> 0102 <Normal Text> mul_ready </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0103 <Normal Text> div_ready </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><br/> 0104 <Normal Text> );</Normal Text><br/> 0105 <Control>end entity light52_muldiv;</Control><br/> 0106 <Normal Text></Normal Text><br/> 0107 <Control>architecture</Control><Normal Text> </Normal Text><Name>sequential</Name><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Reference>light52_muldiv</Reference><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0108 <Normal Text></Normal Text><br/> 0109 <Signal>signal</Signal><Normal Text> bit_ctr </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>;</Normal Text><br/> 0110 <Normal Text></Normal Text><br/> 0111 <Signal>signal</Signal><Normal Text> b_shift_reg </Normal Text><Operator>:</Operator><Normal Text> t_word;</Normal Text><br/> 0112 <Normal Text></Normal Text><br/> 0113 <Signal>signal</Signal><Normal Text> den_ge_256 </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0114 <Signal>signal</Signal><Normal Text> num_ge_den </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0115 <Signal>signal</Signal><Normal Text> sub_num </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0116 <Normal Text></Normal Text><br/> 0117 <Signal>signal</Signal><Normal Text> denominator </Normal Text><Operator>:</Operator><Normal Text> t_byte;</Normal Text><br/> 0118 <Signal>signal</Signal><Normal Text> rem_reg </Normal Text><Operator>:</Operator><Normal Text> t_byte;</Normal Text><br/> 0119 <Signal>signal</Signal><Normal Text> quot_reg </Normal Text><Operator>:</Operator><Normal Text> t_byte;</Normal Text><br/> 0120 <Signal>signal</Signal><Normal Text> prod_reg </Normal Text><Operator>:</Operator><Normal Text> t_word;</Normal Text><br/> 0121 <Signal>signal</Signal><Normal Text> ready </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0122 <Normal Text></Normal Text><br/> 0123 <Signal>signal</Signal><Normal Text> load_regs </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0124 <Normal Text></Normal Text><br/> 0125 <Control>begin</Control><br/> 0126 <Normal Text></Normal Text><br/> 0127 <Comment>-- Control logic ---------------------------------------------------------------</Comment><br/> 0128 <Normal Text></Normal Text><br/> 0129 <Name>control_counter</Name><Operator>:</Operator><Normal Text> </Normal Text><Process>process</Process><Normal Text>(clk)</Normal Text><br/> 0130 <Normal Text> </Normal Text><Keyword>alias</Keyword><Normal Text> sig </Normal Text><Keyword>is</Keyword><Normal Text> </Normal Text><Operator><<</Operator><Signal>signal</Signal><Normal Text> g_test(</Normal Text><Integer>0</Integer><Normal Text>)</Normal Text><Operator>.</Operator><Normal Text>i_test</Normal Text><Operator>.</Operator><Normal Text>sig </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Operator>>></Operator><Normal Text>;</Normal Text><br/> 0131 <Process>begin</Process><br/> 0132 <Normal Text> </Normal Text><Control>if</Control><Normal Text> clk</Normal Text><Attribute>'event</Attribute><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> clk</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0133 <Normal Text> </Normal Text><Control>if</Control><Normal Text> reset</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0134 <Normal Text> bit_ctr </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>;</Normal Text><br/> 0135 <Normal Text> </Normal Text><Control>else</Control><br/> 0136 <Normal Text> </Normal Text><Control>if</Control><Normal Text> load_regs</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0137 <Normal Text> bit_ctr </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>;</Normal Text><br/> 0138 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> bit_ctr </Normal Text><Operator>/=</Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text> </Normal Text><Control>then</Control><br/> 0139 <Normal Text> bit_ctr </Normal Text><Operator><=</Operator><Normal Text> bit_ctr </Normal Text><Operator>+</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0140 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0141 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0142 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0143 <Process>end process control_counter;</Process><br/> 0144 <Normal Text></Normal Text><br/> 0145 <Comment>-- Internal signal ready is asserted after 8 cycles.</Comment><br/> 0146 <Comment>-- The sequential multiplier will use this signal too, IF it takes 8 cycles.</Comment><br/> 0147 <Normal Text></Normal Text><br/> 0148 <Normal Text>ready </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>when</Keyword><Normal Text> bit_ctr </Normal Text><Operator>>=</Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0149 <Normal Text></Normal Text><br/> 0150 <Normal Text></Normal Text><br/> 0151 <Comment>---- Divider logic -------------------------------------------------------------</Comment><br/> 0152 <Normal Text></Normal Text><br/> 0153 <Comment>-- What we do is a simple base-2 'shift-and-subtract' algorithm that takes</Comment><br/> 0154 <Comment>-- 8 cycles to complete. We can get away with this because we deal with unsigned</Comment><br/> 0155 <Comment>-- numbers only.</Comment><br/> 0156 <Normal Text></Normal Text><br/> 0157 <Name>divider_registers</Name><Operator>:</Operator><Normal Text> </Normal Text><Process>process</Process><Normal Text>(clk)</Normal Text><br/> 0158 <Process>begin</Process><br/> 0159 <Normal Text> </Normal Text><Control>if</Control><Normal Text> clk</Normal Text><Attribute>'event</Attribute><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> clk</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0160 <Normal Text> </Normal Text><Comment>-- denominator shift register</Comment><br/> 0161 <Normal Text> </Normal Text><Control>if</Control><Normal Text> load_regs</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0162 <Normal Text> b_shift_reg </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Vector>"0"</Vector><Normal Text> </Normal Text><Operator>&</Operator><Normal Text> data_b </Normal Text><Operator>&</Operator><Normal Text> </Normal Text><Vector>"0000000"</Vector><Normal Text>;</Normal Text><br/> 0163 <Normal Text> </Normal Text><Comment>-- Division overflow can be determined upon loading B reg data.</Comment><br/> 0164 <Normal Text> </Normal Text><Comment>-- OV will be raised only on div-by-zero.</Comment><br/> 0165 <Normal Text> </Normal Text><Control>if</Control><Normal Text> data_b</Normal Text><Operator>=</Operator><Normal Text>X</Normal Text><Vector>"00"</Vector><Normal Text> </Normal Text><Control>then</Control><br/> 0166 <Normal Text> div_ov_out </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text>;</Normal Text><br/> 0167 <Normal Text> </Normal Text><Control>else</Control><br/> 0168 <Normal Text> div_ov_out </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0169 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0170 <Normal Text> </Normal Text><Control>else</Control><br/> 0171 <Normal Text> b_shift_reg </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Vector>"0"</Vector><Normal Text> </Normal Text><Operator>&</Operator><Normal Text> b_shift_reg(b_shift_reg</Normal Text><Attribute>'high</Attribute><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>);</Normal Text><br/> 0172 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0173 <Normal Text> </Normal Text><br/> 0174 <Normal Text> </Normal Text><Comment>-- numerator register</Comment><br/> 0175 <Normal Text> </Normal Text><Control>if</Control><Normal Text> load_regs</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><Normal Text> </Normal Text><br/> 0176 <Normal Text> rem_reg </Normal Text><Operator><=</Operator><Normal Text> data_a;</Normal Text><br/> 0177 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> bit_ctr</Normal Text><Operator>/=</Operator><Integer>8</Integer><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> sub_num</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><Normal Text> </Normal Text><br/> 0178 <Normal Text> rem_reg </Normal Text><Operator><=</Operator><Normal Text> rem_reg </Normal Text><Operator>-</Operator><Normal Text> denominator;</Normal Text><br/> 0179 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0180 <Normal Text></Normal Text><br/> 0181 <Normal Text> </Normal Text><Comment>--- quotient register</Comment><br/> 0182 <Normal Text> </Normal Text><Control>if</Control><Normal Text> load_regs</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0183 <Normal Text> quot_reg </Normal Text><Operator><=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>);</Normal Text><br/> 0184 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> bit_ctr</Normal Text><Operator>/=</Operator><Integer>8</Integer><Normal Text> </Normal Text><Control>then</Control><br/> 0185 <Normal Text> quot_reg </Normal Text><Operator><=</Operator><Normal Text> quot_reg(quot_reg</Normal Text><Attribute>'high-1</Attribute><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Operator>&</Operator><Normal Text> sub_num;</Normal Text><br/> 0186 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0187 <Normal Text> </Normal Text><br/> 0188 <Normal Text> load_regs </Normal Text><Operator><=</Operator><Normal Text> start;</Normal Text><br/> 0189 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0190 <Process>end process divider_registers;</Process><br/> 0191 <Normal Text></Normal Text><br/> 0192 <Normal Text>denominator </Normal Text><Operator><=</Operator><Normal Text> b_shift_reg(</Normal Text><Integer>7</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0193 <Normal Text></Normal Text><br/> 0194 <Comment>-- The 16-bit comparison between b_shift_reg (denominator) and the zero-extended </Comment><br/> 0195 <Comment>-- rem_reg (numerator) can be simplified by splitting it in 2: </Comment><br/> 0196 <Comment>-- If the shifted denominator high byte is not zero, it is >=256...</Comment><br/> 0197 <Normal Text>den_ge_256 </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>when</Keyword><Normal Text> b_shift_reg(</Normal Text><Integer>15</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>) </Normal Text><Operator>/=</Operator><Normal Text> X</Normal Text><Vector>"00"</Vector><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0198 <Comment>-- ...otherwise we need to compare the low bytes.</Comment><br/> 0199 <Normal Text>num_ge_den </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>when</Keyword><Normal Text> rem_reg </Normal Text><Operator>>=</Operator><Normal Text> denominator </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0200 <Normal Text>sub_num </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>when</Keyword><Normal Text> den_ge_256</Normal Text><Operator>=</Operator><Attribute>'0'</Attribute><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> num_ge_den</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0201 <Normal Text></Normal Text><br/> 0202 <Normal Text></Normal Text><br/> 0203 <Normal Text>quot_out </Normal Text><Operator><=</Operator><Normal Text> quot_reg;</Normal Text><br/> 0204 <Normal Text>prod_out </Normal Text><Operator><=</Operator><Normal Text> prod_reg;</Normal Text><br/> 0205 <Normal Text>rem_out </Normal Text><Operator><=</Operator><Normal Text> rem_reg;</Normal Text><br/> 0206 <Normal Text></Normal Text><br/> 0207 <Normal Text>div_ready </Normal Text><Operator><=</Operator><Normal Text> ready;</Normal Text><br/> 0208 <Normal Text></Normal Text><br/> 0209 <Comment>---- Multiplier logic ----------------------------------------------------------</Comment><br/> 0210 <Normal Text></Normal Text><br/> 0211 <Comment>---- Combinational multiplier -----------------------------</Comment><br/> 0212 <Name>multiplier_combinational</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text> SEQUENTIAL_MULTIPLIER </Normal Text><Control>generate</Control><br/> 0213 <Normal Text></Normal Text><br/> 0214 <Name>registered_combinational_multiplier</Name><Operator>:</Operator><Process>process</Process><Normal Text>(clk)</Normal Text><br/> 0215 <Process>begin</Process><br/> 0216 <Normal Text> </Normal Text><Control>if</Control><Normal Text> clk</Normal Text><Attribute>'event</Attribute><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> clk</Normal Text><Operator>=</Operator><Attribute>'1'</Attribute><Normal Text> </Normal Text><Control>then</Control><br/> 0217 <Normal Text> prod_reg </Normal Text><Operator><=</Operator><Normal Text> data_a </Normal Text><Operator>*</Operator><Normal Text> data_b; </Normal Text><Comment>-- t_byte is unsigned</Comment><br/> 0218 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0219 <Process>end process registered_combinational_multiplier;</Process><br/> 0220 <Normal Text></Normal Text><br/> 0221 <Comment>-- The multiplier output is valid in the cycle after the operands are loaded,</Comment><br/> 0222 <Comment>-- so by the time MUL is executed it's already done.</Comment><br/> 0223 <Normal Text>mul_ready </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text>;</Normal Text><br/> 0224 <Normal Text></Normal Text><br/> 0225 <Normal Text>mul_ov_out </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text> </Normal Text><Keyword>when</Keyword><Normal Text> prod_reg(</Normal Text><Integer>15</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>)</Normal Text><Operator>/=</Operator><Normal Text>X</Normal Text><Vector>"00"</Vector><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0226 <Normal Text>prod_out </Normal Text><Operator><=</Operator><Normal Text> prod_reg;</Normal Text><br/> 0227 <Normal Text></Normal Text><br/> 0228 <Control>end generate multiplier_combinational;</Control><br/> 0229 <Normal Text></Normal Text><br/> 0230 <Comment>---- Sequential multiplier --------------------------------</Comment><br/> 0231 <Name>multiplier_sequential</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> SEQUENTIAL_MULTIPLIER </Normal Text><Control>generate</Control><br/> 0232 <Normal Text></Normal Text><br/> 0233 <Keyword>assert</Keyword><Normal Text> </Normal Text><Keyword>false</Keyword><br/> 0234 <Keyword>report</Keyword><Normal Text> </Normal Text><Vector>"Sequential multiplier implementation not done yet."</Vector><Operator>&</Operator><br/> 0235 <Normal Text> </Normal Text><Vector>" Use combinational implementation."</Vector><br/> 0236 <Keyword>severity</Keyword><Normal Text> </Normal Text><Keyword>failure</Keyword><Normal Text>;</Normal Text><br/> 0237 <Normal Text></Normal Text><br/> 0238 <Control>end generate multiplier_sequential;</Control><br/> 0239 <Normal Text></Normal Text><br/> 0240 <Control>end sequential;</Control><br/> 0241 <Normal Text></Normal Text><br/> 0242 <Normal Text></Normal Text><br/> 0243 <Keyword>with</Keyword><Normal Text> Types; </Normal Text><Keyword>use</Keyword><Normal Text> Types;</Normal Text><br/> 0244 <Keyword>with</Keyword><Normal Text> Files_Map;</Normal Text><br/> 0245 <Normal Text></Normal Text><br/> 0246 <Control>package</Control><Normal Text> </Normal Text><Name>fixed_pkg</Name><Normal Text> </Normal Text><Keyword>is</Keyword><Normal Text> </Normal Text><Keyword>new</Keyword><Normal Text> </Normal Text><Name>IEEE</Name><Operator>.</Operator><Normal Text>fixed_generic_pkg</Normal Text><br/> 0247 <Normal Text> </Normal Text><Keyword>generic map </Keyword><Normal Text>(</Normal Text><br/> 0248 <Normal Text> fixed_overflow_style </Normal Text><Operator>=></Operator><Normal Text> IEEE</Normal Text><Operator>.</Operator><Normal Text>fixed_float_types</Normal Text><Operator>.</Operator><Normal Text>fixed_saturate</Normal Text><Operator>,</Operator><br/> 0249 <Normal Text> fixed_guard_bits </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>3</Integer><Operator>,</Operator><br/> 0250 <Normal Text> no_warning </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Keyword>false</Keyword><br/> 0251 <Normal Text> );</Normal Text><br/> 0252 <Normal Text></Normal Text><br/> 0253 <Control>package</Control><Normal Text> </Normal Text><Name>p</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0254 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_ptr </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>access</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0255 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> rec </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>record</Keyword><br/> 0256 <Normal Text> data </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic_vector</Data Type><Normal Text>(</Normal Text><Integer>31</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0257 <Normal Text> ack </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0258 <Normal Text> value </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0259 <Normal Text> link </Normal Text><Operator>:</Operator><Normal Text> rec_ptr;</Normal Text><br/> 0260 <Normal Text> </Normal Text><Keyword>end record;</Keyword><br/> 0261 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_vec </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>array</Keyword><Normal Text> (</Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Operator><></Operator><Normal Text>) </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0262 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_vec_ptr </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>access</Keyword><Normal Text> int_vec;</Normal Text><br/> 0263 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>UNIFORM</Name><Normal Text>(</Normal Text><Signal>variable</Signal><Normal Text> SEED1</Normal Text><Operator>,</Operator><Normal Text> SEED2 </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>inout</Keyword><Normal Text> </Normal Text><Data Type>POSITIVE</Data Type><Normal Text>; </Normal Text><Signal>variable</Signal><Normal Text> X </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>REAL</Data Type><Normal Text>);</Normal Text><br/> 0264 <Normal Text> </Normal Text><Signal>constant</Signal><Normal Text> def_arr </Normal Text><Operator>:</Operator><Normal Text> t_int_array </Normal Text><Operator>:=</Operator><Normal Text> (</Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>2</Integer><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>10</Integer><Normal Text>);</Normal Text><br/> 0265 <Normal Text></Normal Text><br/> 0266 <Normal Text> </Normal Text><Comment>-- type range</Comment><br/> 0267 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> newInt </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Operator>-</Operator><Integer>4</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>3</Integer><Normal Text>;</Normal Text><br/> 0268 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> CAPACITY </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>1</Integer><Exponent>E5</Exponent><Normal Text> </Normal Text><Control>units</Control><br/> 0269 <Normal Text> pF;</Normal Text><br/> 0270 <Normal Text> nF </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Integer>1000</Integer><Normal Text> pF;</Normal Text><br/> 0271 <Normal Text> </Normal Text><Control>end units;</Control><br/> 0272 <Normal Text></Normal Text><br/> 0273 <Normal Text> </Normal Text><Comment>-- type protected</Comment><br/> 0274 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> prot </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>protected</Keyword><br/> 0275 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>meth</Name><Normal Text>(a </Normal Text><Operator>:</Operator><Normal Text> int) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>bit</Data Type><Normal Text>;</Normal Text><br/> 0276 <Normal Text> </Normal Text><Keyword>end protected;</Keyword><br/> 0277 <Normal Text></Normal Text><br/> 0278 <Normal Text> </Normal Text><Comment>-- type protected body</Comment><br/> 0279 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> prot </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>protected</Keyword><Normal Text> </Normal Text><Keyword>body</Keyword><br/> 0280 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> var </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>positive</Data Type><Normal Text>;</Normal Text><br/> 0281 <Normal Text> </Normal Text><Signal>constant</Signal><Normal Text> const </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>boolean</Data Type><Normal Text>;</Normal Text><br/> 0282 <Normal Text></Normal Text><br/> 0283 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>meth</Name><Normal Text>(a </Normal Text><Operator>:</Operator><Normal Text> int) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>bit</Data Type><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0284 <Normal Text> </Normal Text><Redirection>begin</Redirection><br/> 0285 <Normal Text> </Normal Text><Redirection>end function;</Redirection><br/> 0286 <Normal Text> </Normal Text><Keyword>end protected body;</Keyword><br/> 0287 <Normal Text></Normal Text><br/> 0288 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>\?=\</Name><Normal Text> (L</Normal Text><Operator>,</Operator><Normal Text> R </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>BOOLEAN</Data Type><Normal Text>) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>BOOLEAN</Data Type><Normal Text>;</Normal Text><br/> 0289 <Normal Text></Normal Text><br/> 0290 <Control>end package;</Control><br/> 0291 <Normal Text></Normal Text><br/> 0292 <Control>package</Control><Normal Text> </Normal Text><Control>body</Control><Normal Text> </Normal Text><Name>p</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0293 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>\?=\</Name><Normal Text> (L</Normal Text><Operator>,</Operator><Normal Text> R </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>BOOLEAN</Data Type><Normal Text>) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>BOOLEAN</Data Type><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0294 <Normal Text> </Normal Text><Redirection>begin</Redirection><br/> 0295 <Normal Text> </Normal Text><Control>if</Control><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text> (format(format</Normal Text><Attribute>'left</Attribute><Normal Text>) </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Attribute>'%'</Attribute><Normal Text>) </Normal Text><Control>then</Control><br/> 0296 <Normal Text> </Normal Text><Keyword>report</Keyword><Normal Text> </Normal Text><Vector>"to_string: Illegal format string """</Vector><Normal Text> </Normal Text><Operator>&</Operator><Normal Text> format </Normal Text><Operator>&</Operator><Normal Text> </Normal Text><Attribute>'"'</Attribute><br/> 0297 <Normal Text> </Normal Text><Keyword>severity</Keyword><Normal Text> </Normal Text><Keyword>error</Keyword><Normal Text>;</Normal Text><br/> 0298 <Normal Text> </Normal Text><Control>return</Control><Normal Text> </Normal Text><Vector>""</Vector><Normal Text>;</Normal Text><br/> 0299 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0300 <Normal Text> </Normal Text><Control>return</Control><Normal Text> L </Normal Text><Operator>=</Operator><Normal Text> R;</Normal Text><br/> 0301 <Normal Text> </Normal Text><Redirection>end function \?=\;</Redirection><br/> 0302 <Normal Text></Normal Text><br/> 0303 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>test</Name><Normal Text> </Normal Text><Control>is</Control><br/> 0304 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> v </Normal Text><Operator>:</Operator><Normal Text> int_ptr;</Normal Text><br/> 0305 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> i </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0306 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0307 <Normal Text> v </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>null</Keyword><Normal Text>;</Normal Text><br/> 0308 <Normal Text> deallocate(v);</Normal Text><br/> 0309 <Normal Text> v </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>new</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0310 <Normal Text> v </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>new</Keyword><Normal Text> integer</Normal Text><Attribute>'(5)</Attribute><Normal Text>;</Normal Text><br/> 0311 <Normal Text> v</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text> </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Integer>5</Integer><Normal Text>;</Normal Text><br/> 0312 <Normal Text> r</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Operator>.</Operator><Normal Text>value </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0313 <Normal Text> a </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>new</Keyword><Normal Text> int_vec(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>3</Integer><Normal Text>);</Normal Text><br/> 0314 <Normal Text> a</Normal Text><Operator>.</Operator><Keyword>all</Keyword><Normal Text>(</Normal Text><Integer>5</Integer><Normal Text>) </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Integer>2</Integer><Normal Text>;</Normal Text><br/> 0315 <Normal Text> a(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>2</Integer><Normal Text>) </Normal Text><Operator>:=</Operator><Normal Text> (</Normal Text><Integer>1</Integer><Operator>,</Operator><Normal Text> </Normal Text><Integer>2</Integer><Normal Text>);</Normal Text><br/> 0316 <Normal Text> s </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Keyword>new</Keyword><Normal Text> string</Normal Text><Attribute>'("")</Attribute><Normal Text>;</Normal Text><br/> 0317 <Normal Text> </Normal Text><Keyword>end procedure;</Keyword><br/> 0318 <Normal Text></Normal Text><br/> 0319 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>test2</Name><Normal Text>(x </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>inout</Keyword><Normal Text> rec_ptr) </Normal Text><Control>is</Control><br/> 0320 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0321 <Normal Text> x</Normal Text><Operator>.</Operator><Normal Text>value </Normal Text><Operator>:=</Operator><Normal Text> x</Normal Text><Operator>.</Operator><Normal Text>value </Normal Text><Operator>+</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0322 <Normal Text> </Normal Text><Keyword>end procedure;</Keyword><br/> 0323 <Normal Text></Normal Text><br/> 0324 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>test3</Name><Normal Text> </Normal Text><Control>is</Control><br/> 0325 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> a;</Normal Text><br/> 0326 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> a </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>access</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0327 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> v </Normal Text><Operator>:</Operator><Normal Text> a;</Normal Text><br/> 0328 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0329 <Normal Text> </Normal Text><Keyword>end procedure;</Keyword><br/> 0330 <Normal Text></Normal Text><br/> 0331 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_ptr_array </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>array</Keyword><Normal Text> (</Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Operator><></Operator><Normal Text>) </Normal Text><Keyword>of</Keyword><Normal Text> int_ptr;</Normal Text><br/> 0332 <Normal Text></Normal Text><br/> 0333 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>tets4</Name><Normal Text> </Normal Text><Control>is</Control><br/> 0334 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> bvp </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>access</Keyword><Normal Text> </Normal Text><Data Type>bit_vector</Data Type><Normal Text>;</Normal Text><br/> 0335 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> y </Normal Text><Operator>:</Operator><Normal Text> int_ptr(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>3</Integer><Normal Text>) </Normal Text><Operator>:=</Operator><Normal Text> int_ptr</Normal Text><Attribute>'(null)</Attribute><Normal Text>;</Normal Text><br/> 0336 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0337 <Normal Text> </Normal Text><Keyword>end procedure;</Keyword><br/> 0338 <Normal Text></Normal Text><br/> 0339 <Normal Text> </Normal Text><Keyword>procedure</Keyword><Normal Text> </Normal Text><Name>Restore_Origin</Name><Normal Text> (Mark </Normal Text><Operator>:</Operator><Normal Text> Instance_Index_Type) </Normal Text><Control>is</Control><br/> 0340 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0341 <Normal Text> </Normal Text><Control>for</Control><Normal Text> I </Normal Text><Keyword>in</Keyword><Normal Text> reverse Mark </Normal Text><Operator>+</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Operator>..</Operator><Normal Text> Prev_Instance_Table</Normal Text><Operator>.</Operator><Normal Text>Last </Normal Text><Control>loop</Control><br/> 0342 <Normal Text> </Normal Text><Keyword>declare</Keyword><br/> 0343 <Normal Text> El </Normal Text><Operator>:</Operator><Normal Text> Instance_Entry_Type renames Prev_Instance_Table</Normal Text><Operator>.</Operator><Normal Text>Table (I);</Normal Text><br/> 0344 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0345 <Normal Text> Origin_Table</Normal Text><Operator>.</Operator><Normal Text>Table (El</Normal Text><Operator>.</Operator><Normal Text>N) </Normal Text><Operator>:=</Operator><Normal Text> El</Normal Text><Operator>.</Operator><Normal Text>Old_Origin;</Normal Text><br/> 0346 <Normal Text> </Normal Text><Keyword>end;</Keyword><br/> 0347 <Normal Text> </Normal Text><Control>end loop;</Control><br/> 0348 <Normal Text> Prev_Instance_Table</Normal Text><Operator>.</Operator><Normal Text>Set_Last (Mark);</Normal Text><br/> 0349 <Normal Text> </Normal Text><Keyword>end Restore_Origin;</Keyword><br/> 0350 <Normal Text></Normal Text><br/> 0351 <Normal Text> </Normal Text><Comment>-- Instantiate a list. Simply create a new list and instantiate nodes of</Comment><br/> 0352 <Normal Text> </Normal Text><Comment>-- that list.</Comment><br/> 0353 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>Instantiate_Iir_List</Name><Normal Text> (L </Normal Text><Operator>:</Operator><Normal Text> Iir_List; Is_Ref </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>Boolean</Data Type><Normal Text>)</Normal Text><br/> 0354 <Normal Text> </Normal Text><Control>return</Control><Normal Text> Iir_List</Normal Text><br/> 0355 <Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0356 <Normal Text> Res </Normal Text><Operator>:</Operator><Normal Text> Iir_List;</Normal Text><br/> 0357 <Normal Text> El </Normal Text><Operator>:</Operator><Normal Text> Iir;</Normal Text><br/> 0358 <Normal Text> </Normal Text><Redirection>begin</Redirection><br/> 0359 <Normal Text> </Normal Text><Control>case</Control><Normal Text> to_integer(</Normal Text><Data Type>unsigned</Data Type><Normal Text>(CTRL_REF(x</Normal Text><Operator>*</Operator><Integer>4</Integer><Operator>+</Operator><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> x</Normal Text><Operator>*</Operator><Integer>4</Integer><Normal Text>))) </Normal Text><Keyword>is</Keyword><br/> 0360 <Normal Text> </Normal Text><Control>when</Control><Normal Text> </Normal Text><Name>Null_Iir_List</Name><br/> 0361 <Normal Text> </Normal Text><Operator>|</Operator><Normal Text> </Normal Text><Name>Iir_List_All</Name><Normal Text> </Normal Text><Operator>=></Operator><br/> 0362 <Normal Text> </Normal Text><Control>return</Control><Normal Text> L;</Normal Text><br/> 0363 <Normal Text> </Normal Text><Control>when</Control><Normal Text> </Normal Text><Keyword>others</Keyword><Normal Text> </Normal Text><Operator>=></Operator><br/> 0364 <Normal Text> It </Normal Text><Operator>:=</Operator><Normal Text> List_Iterate (L);</Normal Text><br/> 0365 <Normal Text> </Normal Text><Control>while</Control><Normal Text> Is_Valid (It) </Normal Text><Control>loop</Control><br/> 0366 <Normal Text> El </Normal Text><Operator>:=</Operator><Normal Text> Get_Element (It);</Normal Text><br/> 0367 <Normal Text> Append_Element (Res</Normal Text><Operator>,</Operator><Normal Text> Instantiate_Iir (El</Normal Text><Operator>,</Operator><Normal Text> Is_Ref));</Normal Text><br/> 0368 <Normal Text> </Normal Text><Control>end loop;</Control><br/> 0369 <Normal Text> </Normal Text><Control>for</Control><Normal Text> I </Normal Text><Keyword>in</Keyword><Normal Text> Flist_First </Normal Text><Operator>..</Operator><Normal Text> Flist_Last (L) </Normal Text><Control>loop</Control><br/> 0370 <Normal Text> Set_Nth_Element (Res</Normal Text><Operator>,</Operator><Normal Text> I</Normal Text><Operator>,</Operator><Normal Text> Instantiate_Iir (El</Normal Text><Operator>,</Operator><Normal Text> Is_Ref));</Normal Text><br/> 0371 <Normal Text> </Normal Text><Control>end loop;</Control><br/> 0372 <Normal Text> </Normal Text><Control>return</Control><Normal Text> Res;</Normal Text><br/> 0373 <Normal Text> </Normal Text><Control>end case;</Control><br/> 0374 <Normal Text> </Normal Text><Redirection>end Instantiate_Iir_List;</Redirection><br/> 0375 <Control>end package body;</Control><br/> 0376 <Normal Text></Normal Text><br/> 0377 <Comment>-- Library bar</Comment><br/> 0378 <Keyword>context</Keyword><Normal Text> foo</Normal Text><Operator>.</Operator><Normal Text>test_context;</Normal Text><br/> 0379 <Normal Text></Normal Text><br/> 0380 <Keyword>context</Keyword><Normal Text> </Normal Text><Name>foo</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0381 <Normal Text> </Normal Text><Keyword>context</Keyword><Normal Text> foo</Normal Text><Operator>.</Operator><Normal Text>test_context;</Normal Text><br/> 0382 <Keyword>end context foo;</Keyword><br/> 0383 <Normal Text></Normal Text><br/> 0384 <Control>entity</Control><Normal Text> </Normal Text><Name>concat</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0385 <Control>end entity;</Control><br/> 0386 <Normal Text></Normal Text><br/> 0387 <Control>entity</Control><Normal Text> </Normal Text><Name>foo</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0388 <Normal Text> </Normal Text><Control>port</Control><Normal Text> (</Normal Text><br/> 0389 <Normal Text> x </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> my_int );</Normal Text><br/> 0390 <Control>end entity;</Control><br/> 0391 <Normal Text></Normal Text><br/> 0392 <Control>architecture</Control><Normal Text> </Normal Text><Name>t</Name><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Reference>concat</Reference><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0393 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_array </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>array</Keyword><Normal Text> (</Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Operator><></Operator><Normal Text>) </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0394 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> small </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>3</Integer><Normal Text>;</Normal Text><br/> 0395 <Normal Text></Normal Text><br/> 0396 <Normal Text> </Normal Text><Control>component</Control><Normal Text> </Normal Text><Name>or_entity</Name><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0397 <Normal Text> </Normal Text><Control>port</Control><Normal Text>(</Normal Text><br/> 0398 <Normal Text> input_1</Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0399 <Normal Text> output</Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>out</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><br/> 0400 <Normal Text> );</Normal Text><br/> 0401 <Normal Text> </Normal Text><Control>end component;</Control><br/> 0402 <Control>begin</Control><br/> 0403 <Normal Text> </Normal Text><Process>process</Process><br/> 0404 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> s </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text>(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>5</Integer><Normal Text>);</Normal Text><br/> 0405 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> t </Normal Text><Operator>:</Operator><Normal Text> int_array(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>2</Integer><Normal Text>);</Normal Text><br/> 0406 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> c </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>bit_vector</Data Type><Normal Text>(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>4</Integer><Normal Text>);</Normal Text><br/> 0407 <Normal Text> </Normal Text><Process>begin</Process><br/> 0408 <Normal Text> x </Normal Text><Operator>:=</Operator><Normal Text> ( </Normal Text><Integer>1</Integer><Operator>,</Operator><Normal Text> </Normal Text><Integer>2</Integer><Operator>,</Operator><Normal Text> </Normal Text><Integer>3</Integer><Normal Text> );</Normal Text><br/> 0409 <Normal Text> z </Normal Text><Operator>:=</Operator><Normal Text> x </Normal Text><Operator>&</Operator><Normal Text> y;</Normal Text><br/> 0410 <Normal Text> w </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Operator>&</Operator><Normal Text> x;</Normal Text><br/> 0411 <Normal Text> s </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Attribute>'h'</Attribute><Normal Text> </Normal Text><Operator>&</Operator><Normal Text> string</Normal Text><Attribute>'("ello")</Attribute><Normal Text>;</Normal Text><br/> 0412 <Normal Text> </Normal Text><Keyword>assert</Keyword><Normal Text> </Normal Text><Vector>"10"</Vector><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> (b(</Normal Text><Integer>1</Integer><Normal Text>) </Normal Text><Operator>&</Operator><Normal Text> </Normal Text><Vector>"0"</Vector><Normal Text>);</Normal Text><br/> 0413 <Normal Text> </Normal Text><Keyword>wait</Keyword><Normal Text>;</Normal Text><br/> 0414 <Normal Text> </Normal Text><Process>end process;</Process><br/> 0415 <Normal Text></Normal Text><br/> 0416 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Name>CounterVal</Name><Normal Text>(Seconds </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0417 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> TotalSeconds </Normal Text><Operator>:</Operator><Normal Text> interger;</Normal Text><br/> 0418 <Normal Text> </Normal Text><Redirection>begin</Redirection><br/> 0419 <Normal Text> TotalSeconds </Normal Text><Operator>:=</Operator><Normal Text> Seconds </Normal Text><Operator>+</Operator><Normal Text> Minutes </Normal Text><Operator>*</Operator><Normal Text> </Normal Text><Integer>60</Integer><Normal Text>;</Normal Text><br/> 0420 <Normal Text> </Normal Text><Control>return</Control><Normal Text> TotalSeconds </Normal Text><Operator>*</Operator><Normal Text> ClockFrequencyHz </Normal Text><Operator>-</Operator><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0421 <Normal Text> </Normal Text><Redirection>end function;</Redirection><br/> 0422 <Normal Text></Normal Text><br/> 0423 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> enum_type </Normal Text><Signal>is</Signal><Normal Text> (a</Normal Text><Operator>,</Operator><Normal Text> b</Normal Text><Operator>,</Operator><Normal Text> c</Normal Text><Operator>,</Operator><Normal Text> </Normal Text><Operator>...,</Operator><Normal Text> z);</Normal Text><br/> 0424 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> int_array </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>array</Keyword><Normal Text>(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text>;</Normal Text><br/> 0425 <Normal Text></Normal Text><br/> 0426 <Normal Text> </Normal Text><Keyword>subtype</Keyword><Normal Text> addr_int </Normal Text><Keyword>is</Keyword><Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Keyword>range</Keyword><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>65535</Integer><Normal Text>;</Normal Text><br/> 0427 <Normal Text> </Normal Text><Keyword>subtype</Keyword><Normal Text> sub_enum_type </Normal Text><Keyword>is</Keyword><Normal Text> enum_type </Normal Text><Keyword>range</Keyword><Normal Text> a </Normal Text><Range>to</Range><Normal Text> m;</Normal Text><br/> 0428 <Normal Text></Normal Text><br/> 0429 <Normal Text> </Normal Text><Name>inst1</Name><Operator>:</Operator><Normal Text> </Normal Text><Keyword>entity</Keyword><Normal Text> </Normal Text><Reference>work.counter1</Reference><Normal Text>(rtl)</Normal Text><br/> 0430 <Normal Text> </Normal Text><Keyword>generic map </Keyword><Normal Text>(BITS1 </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>)</Normal Text><br/> 0431 <Normal Text> </Normal Text><Keyword>port map </Keyword><Normal Text>(</Normal Text><br/> 0432 <Normal Text> clk1 </Normal Text><Operator>=></Operator><Normal Text> Clock</Normal Text><Operator>,</Operator><br/> 0433 <Normal Text> DATA_OUT </Normal Text><Operator>=></Operator><Normal Text> pwm_data_o(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>5</Integer><Normal Text>)</Normal Text><Operator>,</Operator><br/> 0434 <Normal Text> COMP_IN(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Operator>=></Operator><Normal Text> compensate_i</Normal Text><Operator>,</Operator><br/> 0435 <Normal Text> WRITE_IN </Normal Text><Operator>=></Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>)</Normal Text><br/> 0436 <Normal Text> );</Normal Text><br/> 0437 <Normal Text></Normal Text><br/> 0438 <Normal Text> </Normal Text><Name>inst2</Name><Operator>:</Operator><Normal Text> </Normal Text><Keyword>component</Keyword><Normal Text> </Normal Text><Reference>counter2</Reference><br/> 0439 <Normal Text> </Normal Text><Keyword>generic map </Keyword><Normal Text>(BITS1 </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>)</Normal Text><br/> 0440 <Normal Text> </Normal Text><Keyword>port map </Keyword><Normal Text>(clk1 </Normal Text><Operator>=></Operator><Normal Text> Clock);</Normal Text><br/> 0441 <Normal Text></Normal Text><br/> 0442 <Normal Text> </Normal Text><Name>inst3</Name><Operator>:</Operator><Normal Text> </Normal Text><Keyword>configuration</Keyword><Normal Text> </Normal Text><Reference>counter3</Reference><br/> 0443 <Normal Text> </Normal Text><Keyword>generic map </Keyword><Normal Text>(BITS1 </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>8</Integer><Normal Text>)</Normal Text><br/> 0444 <Normal Text> </Normal Text><Keyword>port map </Keyword><Normal Text>(clk1 </Normal Text><Operator>=></Operator><Normal Text> Clock);</Normal Text><br/> 0445 <Normal Text></Normal Text><br/> 0446 <Normal Text> </Normal Text><Name>THE_PWM_GEN</Name><Normal Text> </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Reference>pwm_generator</Reference><br/> 0447 <Normal Text> </Normal Text><Keyword>generic map</Keyword><Normal Text>(</Normal Text><br/> 0448 <Normal Text> dsfds </Normal Text><Operator>=></Operator><Normal Text> ds</Normal Text><br/> 0449 <Normal Text> )</Normal Text><br/> 0450 <Normal Text> </Normal Text><Keyword>port map</Keyword><Normal Text>(</Normal Text><br/> 0451 <Normal Text> CLK </Normal Text><Operator>=></Operator><Normal Text> clk_i</Normal Text><Operator>,</Operator><br/> 0452 <Normal Text> DATA_IN </Normal Text><Operator>=></Operator><Normal Text> pwm_data_i</Normal Text><Operator>,</Operator><br/> 0453 <Normal Text> DATA_OUT </Normal Text><Operator>=></Operator><Normal Text> pwm_data_o(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>5</Integer><Normal Text>)</Normal Text><Operator>,</Operator><br/> 0454 <Normal Text> COMP_IN(</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Operator>=></Operator><Normal Text> compensate_i</Normal Text><Operator>,</Operator><br/> 0455 <Normal Text> WRITE_IN </Normal Text><Operator>=></Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>)</Normal Text><br/> 0456 <Normal Text> );</Normal Text><br/> 0457 <Normal Text></Normal Text><br/> 0458 <Control>end architecture;</Control><br/> 0459 <Normal Text></Normal Text><br/> 0460 <Control>architecture</Control><Normal Text> </Normal Text><Name>a2</Name><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Reference>e</Reference><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0461 <Normal Text> </Normal Text><Redirection>function</Redirection><Normal Text> </Normal Text><Vector>">"</Vector><Normal Text>(a</Normal Text><Operator>,</Operator><Normal Text> b</Normal Text><Operator>:</Operator><Normal Text> my_int) </Normal Text><Control>return</Control><Normal Text> </Normal Text><Data Type>boolean</Data Type><Normal Text>;</Normal Text><br/> 0462 <Control>begin</Control><br/> 0463 <Normal Text> </Normal Text><Process>process</Process><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0464 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> x</Normal Text><Operator>,</Operator><Normal Text> y </Normal Text><Operator>:</Operator><Normal Text> my_int;</Normal Text><br/> 0465 <Normal Text> </Normal Text><Process>begin</Process><br/> 0466 <Normal Text> </Normal Text><Keyword>assert</Keyword><Normal Text> x </Normal Text><Operator>></Operator><Normal Text> y;</Normal Text><br/> 0467 <Normal Text> </Normal Text><Keyword>assert</Keyword><Normal Text> x </Normal Text><Operator><</Operator><Normal Text> y; </Normal Text><Comment>-- Error</Comment><br/> 0468 <Normal Text> </Normal Text><Process>end process;</Process><br/> 0469 <Normal Text></Normal Text><br/> 0470 <Normal Text> </Normal Text><Name>billowitch_tc586</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>block</Control><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0471 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> real_cons_vector </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>array</Keyword><Normal Text> (</Normal Text><Integer>15</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>) </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Data Type>real</Data Type><Normal Text>;</Normal Text><br/> 0472 <Normal Text> </Normal Text><Signal>type</Signal><Normal Text> real_cons_vector_file </Normal Text><Signal>is</Signal><Normal Text> </Normal Text><Keyword>file</Keyword><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> real_cons_vector;</Normal Text><br/> 0473 <Normal Text> </Normal Text><Signal>constant</Signal><Normal Text> C19 </Normal Text><Operator>:</Operator><Normal Text> real_cons_vector </Normal Text><Operator>:=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Integer>3</Integer><Operator>.</Operator><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0474 <Normal Text> </Normal Text><Keyword>begin</Keyword><br/> 0475 <Normal Text> </Normal Text><Control>end block;</Control><br/> 0476 <Control>end architecture;</Control><br/> 0477 <Normal Text></Normal Text><br/> 0478 <Control>architecture</Control><Normal Text> </Normal Text><Name>arch</Name><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Reference>ent</Reference><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0479 <Control>begin</Control><br/> 0480 <Normal Text> </Normal Text><Name>LL</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> test</Normal Text><Operator>=</Operator><Integer>10</Integer><Normal Text> </Normal Text><Control>generate</Control><br/> 0481 <Normal Text> </Normal Text><Control>begin</Control><br/> 0482 <Normal Text> </Normal Text><Control>end;</Control><br/> 0483 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> test</Normal Text><Operator>=</Operator><Integer>5</Integer><Normal Text> </Normal Text><Control>generate</Control><br/> 0484 <Normal Text> </Normal Text><Control>begin</Control><br/> 0485 <Normal Text> </Normal Text><Control>end;</Control><br/> 0486 <Normal Text> </Normal Text><Control>end generate;</Control><br/> 0487 <Normal Text></Normal Text><br/> 0488 <Normal Text> </Normal Text><Name>LL</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> </Normal Text><Name>l1</Name><Operator>:</Operator><Normal Text> SPEED </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Vector>"fast"</Vector><Normal Text> </Normal Text><Control>generate</Control><br/> 0489 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> test</Normal Text><Operator>=</Operator><Integer>5</Integer><Normal Text> </Normal Text><Control>generate</Control><br/> 0490 <Normal Text> </Normal Text><Control>end generate;</Control><br/> 0491 <Control>end architecture arch;</Control><br/> 0492 <Normal Text></Normal Text><br/> 0493 <Normal Text></Normal Text><br/> 0494 <Control>architecture</Control><Normal Text> </Normal Text><Name>thing_arch</Name><Normal Text> </Normal Text><Keyword>of</Keyword><Normal Text> </Normal Text><Reference>designthing</Reference><Normal Text> </Normal Text><Keyword>is</Keyword><br/> 0495 <Normal Text></Normal Text><br/> 0496 <Control>component</Control><Normal Text> </Normal Text><Name>pwm_generator</Name><br/> 0497 <Normal Text> </Normal Text><Control>port</Control><Normal Text>(</Normal Text><br/> 0498 <Normal Text> CLK </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0499 <Normal Text> DATA_IN </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Data Type>std_logic_vector</Data Type><Normal Text>(</Normal Text><Integer>15</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0500 <Normal Text> );</Normal Text><br/> 0501 <Control>end component pwm_generator;</Control><br/> 0502 <Normal Text></Normal Text><br/> 0503 <Signal>attribute</Signal><Normal Text> NOM_FREQ </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text>;</Normal Text><br/> 0504 <Signal>attribute</Signal><Normal Text> NOM_FREQ </Normal Text><Keyword>of</Keyword><Normal Text> clk_source </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Keyword>label</Keyword><Normal Text> </Normal Text><Keyword>is</Keyword><Normal Text> </Normal Text><Vector>"133.00"</Vector><Normal Text>;</Normal Text><br/> 0505 <Signal>signal</Signal><Normal Text> clk_i </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0506 <Normal Text></Normal Text><br/> 0507 <Control>begin</Control><br/> 0508 <Normal Text></Normal Text><br/> 0509 <Name>gen_no_comp</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> TEMP </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Control>generate</Control><br/> 0510 <Normal Text> compensate_i </Normal Text><Operator><=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>);</Normal Text><br/> 0511 <Control>end generate;</Control><br/> 0512 <Normal Text></Normal Text><br/> 0513 <Name>gen_no_comp</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>for</Control><Normal Text> i </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> TEMP </Normal Text><Control>generate</Control><br/> 0514 <Normal Text> compensate_i </Normal Text><Operator><=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>) </Normal Text><Keyword>after</Keyword><Normal Text> </Normal Text><Integer>10</Integer><Normal Text> </Normal Text><Data Type>ns</Data Type><Normal Text>;</Normal Text><br/> 0515 <Normal Text> compensate_i </Normal Text><Operator><=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>) ;</Normal Text><br/> 0516 <Control>end generate;</Control><br/> 0517 <Normal Text></Normal Text><br/> 0518 <Comment>---------------------------------------------------------------------------</Comment><br/> 0519 <Comment>-- LED blinking when activity on inputs</Comment><br/> 0520 <Comment>---------------------------------------------------------------------------</Comment><br/> 0521 <Name>PROC_TIMER</Name><Normal Text> </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Process>process</Process><Normal Text> </Normal Text><Process>begin</Process><br/> 0522 <Normal Text> </Normal Text><Keyword>wait</Keyword><Normal Text> </Normal Text><Keyword>until</Keyword><Normal Text> </Normal Text><Keyword>rising_edge</Keyword><Normal Text>(clk_i);</Normal Text><br/> 0523 <Normal Text> timer </Normal Text><Operator><=</Operator><Normal Text> timer </Normal Text><Operator>+</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0524 <Normal Text> </Normal Text><Keyword>wait</Keyword><Normal Text> </Normal Text><Keyword>for</Keyword><Normal Text> </Normal Text><Integer>10</Integer><Normal Text> </Normal Text><Data Type>ns</Data Type><Normal Text>;</Normal Text><br/> 0525 <Normal Text> leds </Normal Text><Operator><=</Operator><Normal Text> (last_inp </Normal Text><Keyword>xor</Keyword><Normal Text> inp_status(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>)) </Normal Text><Keyword>or</Keyword><Normal Text> leds </Normal Text><Keyword>or</Keyword><Normal Text> last_leds;</Normal Text><br/> 0526 <Normal Text> </Normal Text><Control>if</Control><Normal Text> timer </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Control>then</Control><br/> 0527 <Normal Text> leds </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text> inp_status(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0528 <Normal Text> last_leds </Normal Text><Operator><=</Operator><Normal Text> x</Normal Text><Vector>"0"</Vector><Normal Text>;</Normal Text><br/> 0529 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> gf </Normal Text><Control>then</Control><br/> 0530 <Normal Text> fdsa </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text>;</Normal Text><br/> 0531 <Normal Text> </Normal Text><Control>end if;</Control><br/> 0532 <Normal Text></Normal Text><br/> 0533 <Normal Text> </Normal Text><Name>xz</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>for</Control><Normal Text> x </Normal Text><Keyword>in</Keyword><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Range>to</Range><Normal Text> </Normal Text><Integer>7</Integer><Normal Text> </Normal Text><Control>loop</Control><br/> 0534 <Normal Text> dsadf;</Normal Text><br/> 0535 <Normal Text> </Normal Text><Control>end loop;</Control><br/> 0536 <Normal Text></Normal Text><br/> 0537 <Normal Text> </Normal Text><Control>case</Control><Normal Text> c </Normal Text><Keyword>is</Keyword><br/> 0538 <Normal Text> </Normal Text><Control>when</Control><Normal Text> </Normal Text><Name>XXX</Name><Normal Text> </Normal Text><Operator>=></Operator><br/> 0539 <Normal Text> c </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Integer>1</Integer><Normal Text>;</Normal Text><br/> 0540 <Normal Text> d </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Integer>21321</Integer><Normal Text>;</Normal Text><br/> 0541 <Normal Text> </Normal Text><Control>when</Control><Normal Text> </Normal Text><Name>YYYY</Name><Normal Text> </Normal Text><Operator>=></Operator><br/> 0542 <Normal Text> c </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Integer>2</Integer><Normal Text>;</Normal Text><br/> 0543 <Normal Text> </Normal Text><Control>end case;</Control><Normal Text> </Normal Text><br/> 0544 <Process>end process;</Process><br/> 0545 <Normal Text></Normal Text><br/> 0546 <Normal Text></Normal Text><br/> 0547 <Name>generate_with_begin</Name><Operator>:</Operator><Normal Text> </Normal Text><Control>if</Control><Normal Text> TEMP </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Control>generate</Control><br/> 0548 <Normal Text> </Normal Text><Signal>signal</Signal><Normal Text> </Normal Text><Operator>:</Operator><Normal Text> test </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0549 <Control>begin</Control><br/> 0550 <Normal Text> compensate_i </Normal Text><Operator><=</Operator><Normal Text> (</Normal Text><Range>others</Range><Normal Text> </Normal Text><Operator>=></Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>);</Normal Text><br/> 0551 <Normal Text> </Normal Text><Control>if</Control><Normal Text> timer </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Control>then</Control><br/> 0552 <Normal Text> leds </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text> inp_status(</Normal Text><Integer>3</Integer><Normal Text> </Normal Text><Range>downto</Range><Normal Text> </Normal Text><Integer>0</Integer><Normal Text>);</Normal Text><br/> 0553 <Normal Text> last_leds </Normal Text><Operator><=</Operator><Normal Text> x</Normal Text><Vector>"0"</Vector><Normal Text>;</Normal Text><br/> 0554 <Normal Text> </Normal Text><Control>elsif</Control><Normal Text> gf </Normal Text><Control>then</Control><br/> 0555 <Normal Text> fdsa </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Attribute>'1'</Attribute><Normal Text>;</Normal Text><br/> 0556 <Normal Text> </Normal Text><Control>end if;</Control><Normal Text> </Normal Text><br/> 0557 <Control>end generate generate_with_begin;</Control><br/> 0558 <Normal Text></Normal Text><br/> 0559 <Name>PROC_TIMER</Name><Normal Text> </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Process>process</Process><br/> 0560 <Normal Text> </Normal Text><Signal>variable</Signal><Normal Text> x </Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Data Type>std_logic</Data Type><Normal Text>;</Normal Text><br/> 0561 <Process>begin</Process><br/> 0562 <Normal Text> x </Normal Text><Operator>:=</Operator><Normal Text> </Normal Text><Attribute>'0'</Attribute><Normal Text>;</Normal Text><br/> 0563 <Process>end process PROC_TIMER;</Process><br/> 0564 <Normal Text></Normal Text><br/> 0565 <Error>end architecture thing_arc;</Error><Normal Text> </Normal Text><Comment>--this is not correct (wrong name)</Comment><br/> 0566 <Normal Text></Normal Text><br/> 0567 <Integer>1</Integer><Operator>+</Operator><Integer>1</Integer><br/> 0568 <Integer>2</Integer><Data Type>ns</Data Type><br/> 0569 <Normal Text></Normal Text><br/> 0570 <Integer>1_2_3</Integer><br/> 0571 <Integer>12_3</Integer><br/> 0572 <Integer>1</Integer><Operator>.</Operator><Integer>2</Integer><br/> 0573 <Integer>1</Integer><Operator>.</Operator><Integer>2_3</Integer><br/> 0574 <Integer>1_3</Integer><Operator>.</Operator><Integer>2_3</Integer><br/> 0575 <Integer>12_3</Integer><Exponent>e+1</Exponent><br/> 0576 <Integer>12_3</Integer><Exponent>e-1</Exponent><br/> 0577 <Integer>12_3</Integer><Exponent>e1_1</Exponent><br/> 0578 <Integer>12_3</Integer><Operator>.</Operator><Integer>4</Integer><Exponent>e1_1</Exponent><br/> 0579 <Integer>12_3</Integer><Exponent>e1</Exponent><Normal Text>_</Normal Text><br/> 0580 <Integer>12_3</Integer><Error>e</Error><br/> 0581 <Normal Text></Normal Text><br/> 0582 <Integer>2</Integer><Operator>#</Operator><Based Integer>1_2_3</Based Integer><Operator>#</Operator><Exponent>E+8</Exponent><br/> 0583 <Integer>2</Integer><Operator>#</Operator><Based Integer>1_2</Based Integer><Operator>.</Operator><Based Integer>3</Based Integer><Operator>#</Operator><Exponent>E+8</Exponent><br/> 0584 <Integer>2</Integer><Operator>#</Operator><Based Integer>1_f2</Based Integer><Operator>.</Operator><Based Integer>3</Based Integer><Operator>#</Operator><br/> 0585 <Normal Text></Normal Text><br/> 0586 <Integer>3</Integer><Operator>.</Operator><Integer>14159_26536</Integer><Normal Text> </Normal Text><Comment>-- A literal of type universal_real.</Comment><br/> 0587 <Integer>5280</Integer><Normal Text> </Normal Text><Comment>-- A literal of type universal_integer.</Comment><br/> 0588 <Integer>10</Integer><Operator>.</Operator><Integer>7</Integer><Normal Text> </Normal Text><Data Type>ns</Data Type><Normal Text> </Normal Text><Comment>-- A literal of a physical type.</Comment><br/> 0589 <Normal Text>O</Normal Text><Vector>"4777"</Vector><Normal Text> </Normal Text><Comment>-- A bit string literal.</Comment><br/> 0590 <Vector>"54LS281"</Vector><Normal Text> </Normal Text><Comment>-- A string literal.</Comment><br/> 0591 <Vector>""</Vector><Normal Text> </Normal Text><Comment>-- A string literal representing a null array.</Comment><br/> 0592 <Normal Text>B</Normal Text><Vector>"1111_1111_1111"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to the string literal "111111111111".</Comment><br/> 0593 <Normal Text>X</Normal Text><Vector>"FFF"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"1111_1111_1111".</Comment><br/> 0594 <Normal Text>O</Normal Text><Vector>"777"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"111_111_111".</Comment><br/> 0595 <Normal Text>X</Normal Text><Vector>"777"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"0111_0111_0111".</Comment><br/> 0596 <Normal Text>B</Normal Text><Vector>"XXXX_01LH"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to the string literal "XXXX01LH"</Comment><br/> 0597 <Normal Text>UO</Normal Text><Vector>"27"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"010_111"</Comment><br/> 0598 <Normal Text>UO</Normal Text><Vector>"2C"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"011_CCC"</Comment><br/> 0599 <Normal Text>SX</Normal Text><Vector>"3W"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"0011_WWWW"</Comment><br/> 0600 <Normal Text>D</Normal Text><Vector>"35"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"100011"</Comment><br/> 0601 <Integer>12</Integer><Normal Text>UB</Normal Text><Vector>"X1"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"0000_0000_00X1"</Comment><br/> 0602 <Integer>12</Integer><Normal Text>SB</Normal Text><Vector>"X1"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"XXXX_XXXX_XXX1"</Comment><br/> 0603 <Integer>12</Integer><Normal Text>UX</Normal Text><Vector>"F-"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"0000_1111_----"</Comment><br/> 0604 <Integer>12</Integer><Normal Text>SX</Normal Text><Vector>"F-"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"1111_1111_----"</Comment><br/> 0605 <Integer>12</Integer><Normal Text>D</Normal Text><Vector>"13"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"0000_0000_1101"</Comment><br/> 0606 <Integer>12</Integer><Normal Text>UX</Normal Text><Vector>"000WWW"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"WWWW_WWWW_WWWW"</Comment><br/> 0607 <Integer>12</Integer><Normal Text>SX</Normal Text><Vector>"FFFC00"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"1100_0000_0000"</Comment><br/> 0608 <Integer>12</Integer><Normal Text>SX</Normal Text><Vector>"XXXX00"</Vector><Normal Text> </Normal Text><Comment>-- Equivalent to B"XXXX_0000_0000"</Comment><br/> 0609 <Integer>8</Integer><Normal Text>D</Normal Text><Vector>"511"</Vector><Normal Text> </Normal Text><Comment>-- Error</Comment><br/> 0610 <Integer>8</Integer><Normal Text>UO</Normal Text><Vector>"477"</Vector><Normal Text> </Normal Text><Comment>-- Error</Comment><br/> 0611 <Integer>8</Integer><Normal Text>SX</Normal Text><Vector>"0FF"</Vector><Normal Text> </Normal Text><Comment>-- Error</Comment><br/> 0612 <Integer>8</Integer><Normal Text>SX</Normal Text><Vector>"FXX"</Vector><Normal Text> </Normal Text><Comment>-- Error</Comment><br/>