OpenCores
URL https://opencores.org/ocsvn/kvcordic/kvcordic/trunk

Subversion Repositories kvcordic

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /kvcordic
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

/trunk/bench/vhdl/cordic_tb.vhd
0,0 → 1,215
-- File automatically generated by "cdfg2hdl".
-- Filename: cordic_tb.vhd
-- Date: 08 November 2010 11:05:42 AM
-- Author: Nikolaos Kavvadias (C) 2009, 2010
 
library IEEE, STD;
use STD.textio.all;
use WORK.std_logic_textio.all;
use IEEE.numeric_std.all;
use WORK.cordic_cdt_pkg.all;
use IEEE.std_logic_1164.all;
 
entity cordic_tb is
end cordic_tb;
 
architecture tb_arch of cordic_tb is
component cordic
port (
clk : in std_logic;
reset : in std_logic;
start : in std_logic;
direction : in std_logic_vector(15 downto 0);
mode : in std_logic_vector(15 downto 0);
xin : in std_logic_vector(15 downto 0);
yin : in std_logic_vector(15 downto 0);
zin : in std_logic_vector(15 downto 0);
xout : out std_logic_vector(15 downto 0);
yout : out std_logic_vector(15 downto 0);
zout : out std_logic_vector(15 downto 0);
done : out std_logic;
ready : out std_logic
);
end component;
signal clk : std_logic;
signal reset : std_logic;
signal start : std_logic;
signal direction : std_logic_vector(15 downto 0);
signal mode : std_logic_vector(15 downto 0);
signal xin : std_logic_vector(15 downto 0);
signal yin : std_logic_vector(15 downto 0);
signal zin : std_logic_vector(15 downto 0);
signal xout : std_logic_vector(15 downto 0);
signal yout : std_logic_vector(15 downto 0);
signal zout : std_logic_vector(15 downto 0);
signal done : std_logic;
signal ready : std_logic;
-- Profiling signals
signal ncycles : integer;
-- Constant declarations
constant CLK_PERIOD : time := 10 ns;
-- Declare test data file and results file
file TestDataFile: text open read_mode is "cordic_test_data.txt";
file ResultsFile: text open write_mode is "cordic_alg_test_results.txt";
begin
uut : cordic
port map (
clk => clk,
reset => reset,
start => start,
direction => direction,
mode => mode,
xin => xin,
yin => yin,
zin => zin,
xout => xout,
yout => yout,
zout => zout,
ready => ready,
done => done
);
 
CLK_GEN_PROC: process(clk)
begin
if (clk = 'U') then
clk <= '1';
else
clk <= not clk after CLK_PERIOD/2;
end if;
end process CLK_GEN_PROC;
 
RESET_START_STIM: process
begin
reset <= '1';
start <= '0';
wait for CLK_PERIOD;
reset <= '0';
start <= '1';
wait for 536870911*CLK_PERIOD;
end process RESET_START_STIM;
 
PROFILING: process(clk, reset, done)
begin
if (reset = '1' or done = '1') then
ncycles <= 0;
elsif (clk = '1' and clk'EVENT) then
ncycles <= ncycles + 1;
end if;
end process PROFILING;
 
CORDIC_BENCH: process
variable direction_v : signed(15 downto 0);
variable direction_v_vec : std_logic_vector(15 downto 0);
variable mode_v : signed(15 downto 0);
variable mode_v_vec : std_logic_vector(15 downto 0);
variable xin_v : signed(15 downto 0);
variable xin_v_vec : std_logic_vector(15 downto 0);
variable yin_v : signed(15 downto 0);
variable yin_v_vec : std_logic_vector(15 downto 0);
variable zin_v : signed(15 downto 0);
variable zin_v_vec : std_logic_vector(15 downto 0);
variable xout_v, xout_ref : signed(15 downto 0);
variable xout_v_vec, xout_ref_vec : std_logic_vector(15 downto 0);
variable yout_v, yout_ref : signed(15 downto 0);
variable yout_v_vec, yout_ref_vec : std_logic_vector(15 downto 0);
variable zout_v, zout_ref : signed(15 downto 0);
variable zout_v_vec, zout_ref_vec : std_logic_vector(15 downto 0);
variable ncycles_v: integer;
variable TestData, BufLine: line;
variable Passed: std_logic := '1';
begin
while not endfile(TestDataFile) loop
-- Read test data from file
readline(TestDataFile, TestData);
hread(TestData, direction_v_vec);
direction <= direction_v_vec;
hread(TestData, mode_v_vec);
mode <= mode_v_vec;
hread(TestData, xin_v_vec);
xin <= xin_v_vec;
hread(TestData, yin_v_vec);
yin <= yin_v_vec;
hread(TestData, zin_v_vec);
zin <= zin_v_vec;
hread(TestData, xout_ref_vec);
xout_ref := SIGNED(xout_ref_vec);
hread(TestData, yout_ref_vec);
yout_ref := SIGNED(yout_ref_vec);
hread(TestData, zout_ref_vec);
zout_ref := SIGNED(zout_ref_vec);
wait until done = '1';
xout_v := signed(xout);
yout_v := signed(yout);
zout_v := signed(zout);
-- Test CORDIC algorithm
if (
(xout_v /= xout_ref) or
(yout_v /= yout_ref) or
(zout_v /= zout_ref)
) then
Passed := '0';
write(Bufline, string'("CORDIC error: direction="));
hwrite(Bufline, STD_LOGIC_VECTOR(direction));
write(Bufline, string'("CORDIC error: mode="));
hwrite(Bufline, STD_LOGIC_VECTOR(mode));
write(Bufline, string'("CORDIC error: xin="));
hwrite(Bufline, STD_LOGIC_VECTOR(xin));
write(Bufline, string'("CORDIC error: yin="));
hwrite(Bufline, STD_LOGIC_VECTOR(yin));
write(Bufline, string'("CORDIC error: zin="));
hwrite(Bufline, STD_LOGIC_VECTOR(zin));
write(Bufline, string'(" xout="));
hwrite(Bufline, STD_LOGIC_VECTOR(xout_v));
write(Bufline, string'(" xout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(xout_ref));
write(Bufline, string'(" yout="));
hwrite(Bufline, STD_LOGIC_VECTOR(yout_v));
write(Bufline, string'(" yout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(yout_ref));
write(Bufline, string'(" zout="));
hwrite(Bufline, STD_LOGIC_VECTOR(zout_v));
write(Bufline, string'(" zout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(zout_ref));
writeline(ResultsFile, Bufline);
else
write(Bufline, string'(" direction="));
hwrite(Bufline, STD_LOGIC_VECTOR(direction));
write(Bufline, string'(" mode="));
hwrite(Bufline, STD_LOGIC_VECTOR(mode));
write(Bufline, string'(" xin="));
hwrite(Bufline, STD_LOGIC_VECTOR(xin));
write(Bufline, string'(" yin="));
hwrite(Bufline, STD_LOGIC_VECTOR(yin));
write(Bufline, string'(" zin="));
hwrite(Bufline, STD_LOGIC_VECTOR(zin));
write(Bufline, string'(" xout="));
hwrite(Bufline, STD_LOGIC_VECTOR(xout));
write(Bufline, string'(" xout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(xout_ref));
write(Bufline, string'(" yout="));
hwrite(Bufline, STD_LOGIC_VECTOR(yout));
write(Bufline, string'(" yout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(yout_ref));
write(Bufline, string'(" zout="));
hwrite(Bufline, STD_LOGIC_VECTOR(zout));
write(Bufline, string'(" zout_ref="));
hwrite(Bufline, STD_LOGIC_VECTOR(zout_ref));
writeline(ResultsFile, Bufline);
ncycles_v := ncycles;
write(Bufline, string'("CORDIC OK: Number of cycles="));
write(Bufline, ncycles_v);
writeline(ResultsFile, Bufline);
end if;
end loop;
if (Passed = '1') then
write(Bufline, string'("CORDIC algorithm test has passed"));
writeline(ResultsFile, Bufline);
-- Automatic end of the current simulation.
assert false
report "End simulation time reached"
severity failure;
end if;
wait for CLK_PERIOD;
end process CORDIC_BENCH;
 
end tb_arch;
trunk/bench/vhdl/cordic_tb.vhd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/rtl/vhdl/cordic.vhd =================================================================== --- trunk/rtl/vhdl/cordic.vhd (nonexistent) +++ trunk/rtl/vhdl/cordic.vhd (revision 2) @@ -0,0 +1,449 @@ +-- File automatically generated by "cdfg2hdl". +-- Filename: cordic.vhd +-- Date: 27 November 2010 08:42:54 PM +-- Author: Nikolaos Kavvadias (C) 2009, 2010 + +library IEEE; +use WORK.operpack.all; +use WORK.cordic_cdt_pkg.all; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + + +entity cordic is + port ( + clk : in std_logic; + reset : in std_logic; + start : in std_logic; + direction : in std_logic_vector(15 downto 0); + mode : in std_logic_vector(15 downto 0); + xin : in std_logic_vector(15 downto 0); + yin : in std_logic_vector(15 downto 0); + zin : in std_logic_vector(15 downto 0); + xout : out std_logic_vector(15 downto 0); + yout : out std_logic_vector(15 downto 0); + zout : out std_logic_vector(15 downto 0); + done : out std_logic; + ready : out std_logic + ); +end cordic; + +architecture fsmd of cordic is + type state_type is (S_ENTRY, S_EXIT, S_001_001, S_002_001, S_003_001, S_004_001); + signal current_state, next_state: state_type; + signal cordic_hyp_steps : cordic_hyp_steps_type := ( + 14 => "0000000000001101", + 13 => "0000000000001101", + 12 => "0000000000001100", + 11 => "0000000000001011", + 10 => "0000000000001010", + 9 => "0000000000001001", + 8 => "0000000000001000", + 7 => "0000000000000111", + 6 => "0000000000000110", + 5 => "0000000000000101", + 4 => "0000000000000100", + 3 => "0000000000000100", + 2 => "0000000000000011", + 1 => "0000000000000010", + 0 => "0000000000000001", + others => (others => '0')); + signal cordic_tab : cordic_tab_type := ( + 41 => "0000000000000001", + 40 => "0000000000000011", + 39 => "0000000000000111", + 38 => "0000000000001111", + 37 => "0000000000011111", + 36 => "0000000000111111", + 35 => "0000000001111111", + 34 => "0000000011111111", + 33 => "0000000111111111", + 32 => "0000001111111110", + 31 => "0000011111110101", + 30 => "0000111110101101", + 29 => "0001110110101100", + 28 => "0011001001000011", + 27 => "0000000000000010", + 26 => "0000000000000100", + 25 => "0000000000001000", + 24 => "0000000000010000", + 23 => "0000000000100000", + 22 => "0000000001000000", + 21 => "0000000010000000", + 20 => "0000000100000000", + 19 => "0000001000000000", + 18 => "0000010000000000", + 17 => "0000100000000000", + 16 => "0001000000000000", + 15 => "0010000000000000", + 14 => "0100000000000000", + 13 => "0000000000000010", + 12 => "0000000000000100", + 11 => "0000000000001000", + 10 => "0000000000010000", + 9 => "0000000000100000", + 8 => "0000000001000000", + 7 => "0000000010000000", + 6 => "0000000100000000", + 5 => "0000001000000000", + 4 => "0000010000000001", + 3 => "0000100000001010", + 2 => "0001000001011000", + 1 => "0010001100100111", + 0 => "1111111111111111", + others => (others => '0')); + signal t5_next : std_logic_vector(15 downto 0); + signal t5_reg : std_logic_vector(15 downto 0); + signal x2_next : std_logic_vector(15 downto 0); + signal x2_reg : std_logic_vector(15 downto 0); + signal y1_next : std_logic_vector(15 downto 0); + signal y1_reg : std_logic_vector(15 downto 0); + signal z2_next : std_logic_vector(15 downto 0); + signal z2_reg : std_logic_vector(15 downto 0); + signal k_next : std_logic_vector(15 downto 0); + signal k_reg : std_logic_vector(15 downto 0); + signal zero_next : std_logic_vector(15 downto 0); + signal zero_reg : std_logic_vector(15 downto 0); + signal one_next : std_logic_vector(15 downto 0); + signal one_reg : std_logic_vector(15 downto 0); + signal t1_next : std_logic_vector(15 downto 0); + signal t1_reg : std_logic_vector(15 downto 0); + signal tabval_next : std_logic_vector(15 downto 0); + signal tabval_reg : std_logic_vector(15 downto 0); + signal x_next : std_logic_vector(15 downto 0); + signal x_reg : std_logic_vector(15 downto 0); + signal y_next : std_logic_vector(15 downto 0); + signal y_reg : std_logic_vector(15 downto 0); + signal z_next : std_logic_vector(15 downto 0); + signal z_reg : std_logic_vector(15 downto 0); + signal ldirection_next : std_logic_vector(15 downto 0); + signal ldirection_reg : std_logic_vector(15 downto 0); + signal lmode_next : std_logic_vector(15 downto 0); + signal lmode_reg : std_logic_vector(15 downto 0); + signal t4_next : std_logic_vector(15 downto 0); + signal t4_reg : std_logic_vector(15 downto 0); + signal ybyk_next : std_logic_vector(15 downto 0); + signal ybyk_reg : std_logic_vector(15 downto 0); + signal t7_next : std_logic_vector(15 downto 0); + signal t7_reg : std_logic_vector(15 downto 0); + signal d_next : std_logic_vector(15 downto 0); + signal d_reg : std_logic_vector(15 downto 0); + signal t0_next : std_logic_vector(15 downto 0); + signal t0_reg : std_logic_vector(15 downto 0); + signal offset_next : std_logic_vector(15 downto 0); + signal offset_reg : std_logic_vector(15 downto 0); + signal kfinal_next : std_logic_vector(15 downto 0); + signal kfinal_reg : std_logic_vector(15 downto 0); + signal kk_next : std_logic_vector(15 downto 0); + signal kk_reg : std_logic_vector(15 downto 0); + signal t9_next : std_logic_vector(15 downto 0); + signal t9_reg : std_logic_vector(15 downto 0); + signal t3_next : std_logic_vector(15 downto 0); + signal t3_reg : std_logic_vector(15 downto 0); + signal t2_next : std_logic_vector(15 downto 0); + signal t2_reg : std_logic_vector(15 downto 0); + signal xbyk_next : std_logic_vector(15 downto 0); + signal xbyk_reg : std_logic_vector(15 downto 0); + signal t6_next : std_logic_vector(15 downto 0); + signal t6_reg : std_logic_vector(15 downto 0); + signal t8_next : std_logic_vector(15 downto 0); + signal t8_reg : std_logic_vector(15 downto 0); + signal x1_next : std_logic_vector(15 downto 0); + signal x1_reg : std_logic_vector(15 downto 0); + signal y2_next : std_logic_vector(15 downto 0); + signal y2_reg : std_logic_vector(15 downto 0); + signal z1_next : std_logic_vector(15 downto 0); + signal z1_reg : std_logic_vector(15 downto 0); + signal zout_next : std_logic_vector(15 downto 0); + signal zout_reg : std_logic_vector(15 downto 0); + signal yout_next : std_logic_vector(15 downto 0); + signal yout_reg : std_logic_vector(15 downto 0); + signal xout_next : std_logic_vector(15 downto 0); + signal xout_reg : std_logic_vector(15 downto 0); + constant CNST_28 : std_logic_vector(15 downto 0) := "0000000000011100"; + constant CNST_2 : std_logic_vector(15 downto 0) := "0000000000000010"; + constant CNST_15 : std_logic_vector(15 downto 0) := "0000000000001111"; + constant CNST_14 : std_logic_vector(15 downto 0) := "0000000000001110"; + constant CNST_1 : std_logic_vector(15 downto 0) := "0000000000000001"; + constant CNST_0 : std_logic_vector(15 downto 0) := "0000000000000000"; +begin + -- current state logic + process (clk, reset) + begin + if (reset = '1') then + current_state <= S_ENTRY; + t5_reg <= (others => '0'); + x2_reg <= (others => '0'); + y1_reg <= (others => '0'); + z2_reg <= (others => '0'); + k_reg <= (others => '0'); + zero_reg <= (others => '0'); + one_reg <= (others => '0'); + t1_reg <= (others => '0'); + tabval_reg <= (others => '0'); + x_reg <= (others => '0'); + y_reg <= (others => '0'); + z_reg <= (others => '0'); + ldirection_reg <= (others => '0'); + lmode_reg <= (others => '0'); + t4_reg <= (others => '0'); + ybyk_reg <= (others => '0'); + t7_reg <= (others => '0'); + d_reg <= (others => '0'); + t0_reg <= (others => '0'); + offset_reg <= (others => '0'); + kfinal_reg <= (others => '0'); + kk_reg <= (others => '0'); + t9_reg <= (others => '0'); + t3_reg <= (others => '0'); + t2_reg <= (others => '0'); + xbyk_reg <= (others => '0'); + t6_reg <= (others => '0'); + t8_reg <= (others => '0'); + x1_reg <= (others => '0'); + y2_reg <= (others => '0'); + z1_reg <= (others => '0'); + zout_reg <= (others => '0'); + yout_reg <= (others => '0'); + xout_reg <= (others => '0'); + elsif (clk = '1' and clk'EVENT) then + current_state <= next_state; + t5_reg <= t5_next; + x2_reg <= x2_next; + y1_reg <= y1_next; + z2_reg <= z2_next; + k_reg <= k_next; + zero_reg <= zero_next; + one_reg <= one_next; + t1_reg <= t1_next; + tabval_reg <= tabval_next; + x_reg <= x_next; + y_reg <= y_next; + z_reg <= z_next; + ldirection_reg <= ldirection_next; + lmode_reg <= lmode_next; + t4_reg <= t4_next; + ybyk_reg <= ybyk_next; + t7_reg <= t7_next; + d_reg <= d_next; + t0_reg <= t0_next; + offset_reg <= offset_next; + kfinal_reg <= kfinal_next; + kk_reg <= kk_next; + t9_reg <= t9_next; + t3_reg <= t3_next; + t2_reg <= t2_next; + xbyk_reg <= xbyk_next; + t6_reg <= t6_next; + t8_reg <= t8_next; + x1_reg <= x1_next; + y2_reg <= y2_next; + z1_reg <= z1_next; + zout_reg <= zout_next; + yout_reg <= yout_next; + xout_reg <= xout_next; + end if; + end process; + + -- next state and output logic + process (current_state, start, + direction, + mode, + xin, + yin, + zin, + xout_reg, + yout_reg, + zout_reg, + t5_reg, t5_next, + x2_reg, x2_next, + y1_reg, y1_next, + z2_reg, z2_next, + k_reg, k_next, + zero_reg, zero_next, + one_reg, one_next, + t1_reg, t1_next, + tabval_reg, tabval_next, + x_reg, x_next, + y_reg, y_next, + z_reg, z_next, + ldirection_reg, ldirection_next, + lmode_reg, lmode_next, + t4_reg, t4_next, + ybyk_reg, ybyk_next, + t7_reg, t7_next, + d_reg, d_next, + t0_reg, t0_next, + offset_reg, offset_next, + kfinal_reg, kfinal_next, + kk_reg, kk_next, + t9_reg, t9_next, + t3_reg, t3_next, + t2_reg, t2_next, + xbyk_reg, xbyk_next, + t6_reg, t6_next, + t8_reg, t8_next, + x1_reg, x1_next, + y2_reg, y2_next, + z1_reg, z1_next + ) + begin + done <= '0'; + ready <= '0'; + t5_next <= t5_reg; + x2_next <= x2_reg; + y1_next <= y1_reg; + z2_next <= z2_reg; + k_next <= k_reg; + zero_next <= zero_reg; + one_next <= one_reg; + t1_next <= t1_reg; + tabval_next <= tabval_reg; + x_next <= x_reg; + y_next <= y_reg; + z_next <= z_reg; + ldirection_next <= ldirection_reg; + lmode_next <= lmode_reg; + t4_next <= t4_reg; + ybyk_next <= ybyk_reg; + t7_next <= t7_reg; + d_next <= d_reg; + t0_next <= t0_reg; + offset_next <= offset_reg; + kfinal_next <= kfinal_reg; + kk_next <= kk_reg; + t9_next <= t9_reg; + t3_next <= t3_reg; + t2_next <= t2_reg; + xbyk_next <= xbyk_reg; + t6_next <= t6_reg; + t8_next <= t8_reg; + x1_next <= x1_reg; + y2_next <= y2_reg; + z1_next <= z1_reg; + zout_next <= zout_reg; + yout_next <= yout_reg; + xout_next <= xout_reg; + case current_state is + when S_ENTRY => + ready <= '1'; + if (start = '1') then + next_state <= S_001_001; + else + next_state <= S_ENTRY; + end if; + when S_001_001 => + zero_next <= CNST_0(15 downto 0); + one_next <= CNST_1(15 downto 0); + x_next <= xin(15 downto 0); + y_next <= yin(15 downto 0); + z_next <= zin(15 downto 0); + ldirection_next <= direction(15 downto 0); + lmode_next <= mode(15 downto 0); + k_next <= CNST_0(15 downto 0); + if (lmode_next = CNST_1(15 downto 0)) then + t0_next <= CNST_14(15 downto 0); + else + t0_next <= CNST_28(15 downto 0); + end if; + if (lmode_next = CNST_2(15 downto 0)) then + offset_next <= CNST_0(15 downto 0); + else + offset_next <= t0_next(15 downto 0); + end if; + if (lmode_next = CNST_2(15 downto 0)) then + kfinal_next <= CNST_15(15 downto 0); + else + kfinal_next <= CNST_14(15 downto 0); + end if; + next_state <= S_002_001; + when S_002_001 => + if (k_reg < kfinal_reg(15 downto 0)) then + next_state <= S_003_001; + else + next_state <= S_004_001; + end if; + when S_003_001 => + t1_next <= cordic_hyp_steps(to_integer(unsigned(k_reg(3 downto 0)))); + if (lmode_reg /= CNST_2(15 downto 0)) then + kk_next <= k_reg(15 downto 0); + else + kk_next <= t1_next(15 downto 0); + end if; + t2_next <= shrv4(y_reg, kk_next, '1'); + t3_next <= std_logic_vector(not(unsigned(t2_next(15 downto 0))) + unsigned(ONE)); + xbyk_next <= shrv4(x_reg, kk_next, '1'); + if (lmode_reg = CNST_1(15 downto 0)) then + t4_next <= zero_reg(15 downto 0); + else + t4_next <= t2_next(15 downto 0); + end if; + if (lmode_reg = CNST_2(15 downto 0)) then + ybyk_next <= t3_next(15 downto 0); + else + ybyk_next <= t4_next(15 downto 0); + end if; + t5_next <= std_logic_vector(signed(kk_next) + signed(offset_reg(15 downto 0))); + tabval_next <= cordic_tab(to_integer(unsigned(t5_next(5 downto 0)))); + t6_next(15 downto 1) <= (others => z_reg(15)); + t6_next(0 downto 0) <= z_reg(15 downto 15); + if (t6_next = CNST_0(15 downto 0)) then + t7_next <= zero_reg(15 downto 0); + else + t7_next <= one_reg(15 downto 0); + end if; + t8_next(15 downto 1) <= (others => y_reg(15)); + t8_next(0 downto 0) <= y_reg(15 downto 15); + if (t8_next /= CNST_0(15 downto 0)) then + t9_next <= zero_reg(15 downto 0); + else + t9_next <= one_reg(15 downto 0); + end if; + if (ldirection_reg = CNST_0(15 downto 0)) then + d_next <= t7_next(15 downto 0); + else + d_next <= t9_next(15 downto 0); + end if; + x1_next <= std_logic_vector(signed(x_reg) - signed(ybyk_next(15 downto 0))); + x2_next <= std_logic_vector(signed(x_reg) + signed(ybyk_next(15 downto 0))); + y1_next <= std_logic_vector(signed(y_reg) + signed(xbyk_next(15 downto 0))); + y2_next <= std_logic_vector(signed(y_reg) - signed(xbyk_next(15 downto 0))); + z1_next <= std_logic_vector(signed(z_reg) - signed(tabval_next(15 downto 0))); + z2_next <= std_logic_vector(signed(z_reg) + signed(tabval_next(15 downto 0))); + if (d_next = CNST_0(15 downto 0)) then + x_next <= x1_next(15 downto 0); + else + x_next <= x2_next(15 downto 0); + end if; + if (d_next = CNST_0(15 downto 0)) then + y_next <= y1_next(15 downto 0); + else + y_next <= y2_next(15 downto 0); + end if; + if (d_next = CNST_0(15 downto 0)) then + z_next <= z1_next(15 downto 0); + else + z_next <= z2_next(15 downto 0); + end if; + k_next <= std_logic_vector(signed(k_reg) + signed(CNST_1(15 downto 0))); + if (k_next < kfinal_reg(15 downto 0)) then + next_state <= S_003_001; + else + next_state <= S_004_001; + end if; + when S_004_001 => + xout_next <= x_reg(15 downto 0); + yout_next <= y_reg(15 downto 0); + zout_next <= z_reg(15 downto 0); + next_state <= S_EXIT; + when S_EXIT => + done <= '1'; + next_state <= S_ENTRY; + end case; + end process; + + zout <= zout_reg; + yout <= yout_reg; + xout <= xout_reg; + +end fsmd;
trunk/rtl/vhdl/cordic.vhd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/rtl/vhdl/cordic_cdt_pkg.vhd =================================================================== --- trunk/rtl/vhdl/cordic_cdt_pkg.vhd (nonexistent) +++ trunk/rtl/vhdl/cordic_cdt_pkg.vhd (revision 2) @@ -0,0 +1,16 @@ +-- File automatically generated by "nac2cdfg". +-- Filename: cordic_cdt_pkg.vhd +-- Date: 27 November 2010 08:42:54 PM +-- Author: Nikolaos Kavvadias (C) 2009, 2010 + +library IEEE; +use IEEE.std_logic_1164.all; + +package cordic_cdt_pkg is + + type cdt000_type is array (41 downto 0) of std_logic_vector(15 downto 0); + type cdt001_type is array (14 downto 0) of std_logic_vector(15 downto 0); + alias cordic_tab_type is cdt000_type; + alias cordic_hyp_steps_type is cdt001_type; + +end cordic_cdt_pkg;
trunk/rtl/vhdl/cordic_cdt_pkg.vhd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/README.html =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/xml Index: trunk/doc/README.html =================================================================== --- trunk/doc/README.html (nonexistent) +++ trunk/doc/README.html (revision 2)
trunk/doc/README.html Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/xml \ No newline at end of property Index: trunk/doc/README.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/pdf Index: trunk/doc/README.pdf =================================================================== --- trunk/doc/README.pdf (nonexistent) +++ trunk/doc/README.pdf (revision 2)
trunk/doc/README.pdf Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/pdf \ No newline at end of property Index: trunk/doc/CORDIC-EULA.txt =================================================================== --- trunk/doc/CORDIC-EULA.txt (nonexistent) +++ trunk/doc/CORDIC-EULA.txt (revision 2) @@ -0,0 +1,90 @@ +CORDIC IP CORE END-USER LICENSE AGREEMENT +========================================= + +1. Definitions +1.1 “Generated IP-Core”, “IP-Core", "IP-CORE", "IP CORE" or "Licensed Materials" +shall mean all design data files distributed within the "cordic-v1.0.0" package. +1.2 "Licensor" shall mean the following people: Nikolaos Kavvadias +. +1.3 "Copyright holder" shall mean: Nikolaos Kavvadias . +1.4 “Licensee” or “You” shall mean any recipient of the Licensed Materials +in any applicable for. The Licensee accepts to obtain the CORDIC IP CORE +subject to the terms and conditions of this Agreement. +1.5 “Agreement" shall mean this document. + +2. Restrictions +Licensee shall not use the Licensed Materials for any purpose that involves +commercial or for-profit activity. Licensee shall use the Licensed Materials +solely for non-commercial, non-profit, demonstration-only personal use. Licensee +may use the "Licensed Materials" for performance evaluation with his/her or +third-party IP-Core(s). Performance evaluation results may be published as part +of scientific publications without reproduction of any part of the IP-Core. +Licensee may make unlimited copies of the Licensed Materials solely for backup +or archival purposes. + +3. Non-Disclosure +Licensee shall keep the Licensed Materials in confidence. Licensee shall not +make the Licensed Materials available in any form to any person other than +Licensee. + +4. Prohibition on Reverse Engineering, Decompilation, and Disassembly +You may not reverse engineer, decompile, or disassemble the Licensed Materials, +except and only to the extent that such activity is expressly permitted by +applicable law notwithstanding this limitation. + +5. Non-Transferable +Licensee shall not distribute, rent, lend, loan, lease, sublease, assign, +transfer, license, or sublicense the Licensed Materials in whole or in part to a +third party without express written permission from Licensor. + +6. Intellectual Property Rights +6.1 The Licensee acknowledges that Copyright Holder shall retain sole right, +title, and ownership of the IP-Core and all intellectual property rights +(including patents, copyrights, trade secrets, trade names, trademarks and +invention disclosures) related to the IP-Core, including, but not limited to, +any and all improvements, modifications or derivatives thereof. +6.2 This Agreement does not grant the Licensee any rights to any patents, +copyrights, trade secrets, trade names, trademarks, or any other rights or +licenses with respect to the IP-Core except those granted in Section 2. +6.3 The Licensee agrees to maintain the secrecy of the contents of the IP-Core +and to implement adequate safeguards to prevent and protect the contents of the +IP-Core from unauthorized use or disclosure. + +7. Termination +This License Agreement is effective until terminated. Licensee may terminate it +at any time by destroying all copies of the Licensed Materials. In the event +Licensee fails to comply with any term of this License Agreement, this License +Agreement will terminate immediately, and Licensee must destroy all copies of +the Licensed Materials. + +8. Critical Applications - Limitation of Liability +THE IP-CORE IS NOT INTENDED TO BE FAIL-SAFE, OR FOR USE IN AN APPLICATION +REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS LIFESUPPORT SYSTEMS, SAFETY DEVICES, +NUCLEAR FACILITIES, WEAPONS OR WEAPONS SYSTEMS, HAZARDOUS SUBSTANCE MANAGEMENT +OR MEANS OF MASS TRANSPORTATION. FURTHERMORE, LICENSOR SHALL NOT BE LIABLE FOR +ANY DAMAGES RESULTING FROM OR IN CONNECTION WITH THE USE OF THE IP-CORE IN ANY +APPLICATION WHERE THE FAILURE OR INACCURACY OF THE IP-CORE MIGHT RESULT IN +DEATH, PERSONAL INJURY, OR DAMAGE TO EITHER PROPERTY OR THE ENVIRONMENT. YOU +AGREE TO INDEMNIFY AND HOLD HARMLESS LICENSOR FROM ANY CLAIMS, LOSSES, COSTS, +DAMAGES, EXPENSES OR LIABILITY, INCLUDING LEGAL FEES, ARISING OUT OF OR IN +CONNECTION WITH SUCH USE. + +9. Limited Warranty and Disclaimer +EXCEPT AS EXPRESSLY STATED ABOVE, THE LICENSED MATERIALS ARE PROVIDED TO +LICENSEE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR +A PARTICULAR PURPOSE. +LICENSOR DOES NOT WARRANT THAT THE IP-CORE WILL MEET THE LICENSEE'S REQUIREMENTS +OR THAT THE OPERATION OF THE IP-CORE WILL BE UNINTERRUPTED OR ERROR FREE. +FURTHERMORE, LICENSOR DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING USE +OR THE RESULTS OF THE USE OF THE IP-CORE IN TERMS OF CORRECTNESS, ACCURACY, +RELIABILITY OR OTHERWISE. + +10. Governing Law +10.1 This Agreement shall be governed by and construed under the laws of Greece +and the Greek courts shall have exclusive jurisdiction to hear all matters +arising out of this Agreement. +10.2 If any provision of this Agreement is held by a court of competent +jurisdiction to be void, invalid, unenforceable or illegal, such provision shall +be severed from this Agreement and the remaining provisions will remain in full +force and effect.
trunk/doc/CORDIC-EULA.txt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/VERSION =================================================================== --- trunk/doc/VERSION (nonexistent) +++ trunk/doc/VERSION (revision 2) @@ -0,0 +1 @@ +1.0.0
trunk/doc/VERSION Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/AUTHORS =================================================================== --- trunk/doc/AUTHORS (nonexistent) +++ trunk/doc/AUTHORS (revision 2) @@ -0,0 +1,5 @@ +Authors of cordic. + +cordic Nikolaos Kavvadias + +AUTHORS ends here
trunk/doc/AUTHORS Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/rst2docs.sh =================================================================== --- trunk/doc/rst2docs.sh (nonexistent) +++ trunk/doc/rst2docs.sh (revision 2) @@ -0,0 +1,13 @@ +#!/bin/bash + +#DOCUTILS_PATH="/usr/local/bin/docutils/tools" +#DOCUTILS_PATH="/cygdrive/c/docutils-0.11/tools" +#DOCUTILS_PATH="/usr/local/bin/docutils/tools" +DOCUTILS_PATH="/c/docutils-0.11/tools" + +${DOCUTILS_PATH}/rst2html.py <$1 >$1.html +${DOCUTILS_PATH}/rst2latex.py <$1 >$1.tex +pdflatex --shell-escape $1.tex +rm -rf $1.aux $1.log $1.out $1.tex + +exit 0
trunk/doc/rst2docs.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/README =================================================================== --- trunk/doc/README (nonexistent) +++ trunk/doc/README (revision 2) @@ -0,0 +1,240 @@ +==================== + cordic user manual +==================== + ++-------------------+----------------------------------------------------------+ +| **Title** | cordic (Multi-function, universal, fixed-point CORDIC) | ++-------------------+----------------------------------------------------------+ +| **Author** | Nikolaos Kavvadias (C) 2010, 2011, 2012, 2013, 2014 | ++-------------------+----------------------------------------------------------+ +| **Contact** | nikos@nkavvadias.com | ++-------------------+----------------------------------------------------------+ +| **Website** | http://www.nkavvadias.com | ++-------------------+----------------------------------------------------------+ +| **Release Date** | 22 February 2014 | ++-------------------+----------------------------------------------------------+ +| **Version** | 1.0.0 | ++-------------------+----------------------------------------------------------+ +| **Rev. history** | | ++-------------------+----------------------------------------------------------+ +| **v1.0.0** | 2013-02-22 | +| | | +| | Updated architecture. A single cycle is now needed per | +| | iteration. Documentation updated to RestructuredText. | +| | Logic synthesis scripts updated for Xilinx ISE/XST 14.6. | ++-------------------+----------------------------------------------------------+ +| **v0.0.2** | 2010-11-08 | +| | | +| | A universal CORDIC algorithm is now specified. The new | +| | version uses the full CORDIC interface (X,Y,Z) for input | +| | and output. Q2.14 (16-bit) signed fixed-point arithmetic | +| | is emulated through the use of integers. | ++-------------------+----------------------------------------------------------+ +| **v0.0.1** | 2010-11-04 | +| | | +| | The CORDIC-EULA.txt has been added. | ++-------------------+----------------------------------------------------------+ +| **v0.0.0** | 2010-11-01 | +| | | +| | Initial release. | ++-------------------+----------------------------------------------------------+ + + +1. Introduction +=============== + +``cordic`` is a collection of files comprising an implementation of a universal +CORDIC algorithm (rotation/vectoring direction, circular/linear/hyperbolic mode) +high-level synthesis benchmark by Nikolaos Kavvadias. All design files except +``cordic.c``, ``cordic.nac``, and ``cordic_test_data.txt`` +have been automatically generated. The original ``cordic.vhd`` has been +optimized via (manual) operation chaining. ``operpack.vhd``, +``std_logic_textio.vhd`` are simulation/synthesis library files, copyrighted by +their respective authors. + +IMPORTANT: Please go through the license agreement (``CORDIC-EULA.txt``) to +ensure proper use of the CORDIC IP CORE. + + +2. File listing +=============== + +The CORDIC IP core distribution includes the following files: + ++-----------------------+------------------------------------------------------+ +| /cordic | Top-level directory | ++-----------------------+------------------------------------------------------+ +| /bench/vhdl | Benchmarks VHDL directory | ++-----------------------+------------------------------------------------------+ +| cordic_tb.vhd | Automatically-generated VHDL testbench file. | ++-----------------------+------------------------------------------------------+ +| /doc | Documentation directory | ++-----------------------+------------------------------------------------------+ +| AUTHORS | List of authors. | ++-----------------------+------------------------------------------------------+ +| CORDIC-EULA.txt | End-user license agreement for using ``cordic``. | ++-----------------------+------------------------------------------------------+ +| README | This file. | ++-----------------------+------------------------------------------------------+ +| README.html | HTML version of README. | ++-----------------------+------------------------------------------------------+ +| README.pdf | PDF version of README. | ++-----------------------+------------------------------------------------------+ +| rst2docs.sh | Bash script for generating the HTML and PDF versions.| ++-----------------------+------------------------------------------------------+ +| VERSION | Current version of the CORDIC IP cores. | ++-----------------------+------------------------------------------------------+ +| /rtl/vhdl | RTL source code directory for the IP core | ++-----------------------+------------------------------------------------------+ +| cordic.vhd | Automatically-generated VHDL design file | +| | (hand-optimized for operation chaining). | ++-----------------------+------------------------------------------------------+ +| cordic_cdt_pkg.vhd | Package containing declarations. | ++-----------------------+------------------------------------------------------+ +| /sim/rtl_sim | RTL simulation files directory | ++-----------------------+------------------------------------------------------+ +| /sim/rtl_sim/bin | RTL simulation scripts directory | ++-----------------------+------------------------------------------------------+ +| cordic.mk | Unix/Cygwin makefile for running a GHDL simulation. | ++-----------------------+------------------------------------------------------+ +| /sim/rtl_sim/out | Dumps and other useful output from RTL simulation | ++-----------------------+------------------------------------------------------+ +| cordic_alg_test_res- | Check this file for output. | +| ults.txt | | ++-----------------------+------------------------------------------------------+ +| /sim/rtl_sim/run | Files for running RTL simulations | ++-----------------------+------------------------------------------------------+ +| cordic.sh | Unix/Cygwin bash shell script for running a GHDL | +| | simulation. | ++-----------------------+------------------------------------------------------+ +| cordic_test_data.txt | Reference vectors. | ++-----------------------+------------------------------------------------------+ +| /sim/rtl_sim/vhdl | VHDL source files used for running RTL simulations | ++-----------------------+------------------------------------------------------+ +| operpack.vhd | Reduced version of Nikolaos Kavvadias' operator | +| | library. | ++-----------------------+------------------------------------------------------+ +| std_logic_textio.vhd | Modified version of a testbench-related package. | ++-----------------------+------------------------------------------------------+ +| /sw | Software utilities | ++-----------------------+------------------------------------------------------+ +| cordic.c | Reference C implementation for test vector | +| | generation. | ++-----------------------+------------------------------------------------------+ +| cordic.dot | CDFG of the cordic procedure as a Graphviz file. | ++-----------------------+------------------------------------------------------+ +| cordic.dot.png | PNG image for the above. | ++-----------------------+------------------------------------------------------+ +| cordic.nac | The NAC description of the CORDIC application. | ++-----------------------+------------------------------------------------------+ +| cordic-flp.txt | Comparison of fixed-point to floating-point CORDIC | +| | (using calls to the ``math`` C library) results. | ++-----------------------+------------------------------------------------------+ +| /syn/xise | Synthesis files for use with Xilinx ISE | ++-----------------------+------------------------------------------------------+ +| /syn/xise/bin | Synthesis scripts directory | ++-----------------------+------------------------------------------------------+ +| xst.mk | Standard Makefile for command-line usage of ISE. | ++-----------------------+------------------------------------------------------+ +| /syn/xise/log | Generated log files from the synthesis process | ++-----------------------+------------------------------------------------------+ +| cordic-xst14.6.txt | Synthesis report from Xilinx ISE (XST) 14.6. | ++-----------------------+------------------------------------------------------+ +| /syn/xise/run | Files for running synthesis | ++-----------------------+------------------------------------------------------+ +| syn.sh | Bash shell script for synthesizing ``cordic`` | +| | architectures with ISE. | ++-----------------------+------------------------------------------------------+ + + +3. Usage +======== + +1. Run the shell script from a Unix/Linux/Cygwin command line. + +| ``$ ./cordic.sh`` + +After this process, the ``cordic_alg_test_results.txt`` file is generated +containing simulation results. The GHDL simulation will also generate +a VCD (waveform) file that can be opened with GTKwave: + +| ``$gtkwave cordic_fsmd.vcd`` + +2. Create, build and run a Modelsim project with the following files (in +this order): + +:: + + operpack.vhd + std_logic_textio.vhd + cordic_cdt_pkg.vhd + ram.vhd + cordic.vhd + cordic_tb.vhd + + +4. Synthesis +============ + +The CORDIC IP cores distribution includes scripts for logic synthesis automation +supporting Xilinx ISE. The corresponding synthesis script can be edited in order +to specify the following for adapting to the user's setup: + +- ``XDIR``: the path to the ``/bin`` subdirectory of the Xilinx ISE/XST + installation where the ``xst.exe`` executable is placed +- ``arch``: specific FPGA architecture (device family) to be used for synthesis +- ``part``: specific FPGA part (device) to be used for synthesis + +4.1. Running the synthesis script +--------------------------------- + +For running the Xilinx ISE synthesis tool, change directory to the +``/syn/xise/run`` subdirectory from the top-level directory of CORDIC: + +| ``$ ./syn/xise/run`` + +and execute the corresponding script (for synthesizing ``hwlu``): + +| ``$ ./syn.sh`` + +The synthesis procedure invokes several Xilinx ISE command-line tools for logic +synthesis as described in the corresponding Makefile, found in the +the ``/syn/xise/bin`` subdirectory. + +Typically, this process includes the following: + +- Generation of the ``*.xst`` synthesis script file. +- Generation of the ``*.ngc`` gate-level netlist file in NGC format. +- Building the corresponding ``*.ngd`` file. +- Performing mapping using ``map`` which generates the corresponding ``*.ncd`` + file. +- Place-and-routing using ``par`` which updates the corresponding ``*.ncd`` + file. +- Tracing critical paths using ``trce`` for reoptimizing the ``*.ncd`` file. +- Bitstream generation (``*.bit``) using ``bitgen``, however with unused pins. + +Finally, the ``cordic.bit`` bitstream file is produced. + + +5. Prerequisities +================= + +- Standard UNIX-based tools (tested with gcc-4.6.2 on MinGW/x86) [optional if + you use Modelsim]. + + * make + * bash (shell) + + For this reason, MinGW (http://www.mingw.org) or Cygwin + (http://sources.redhat.com/cygwin) are suggested, since POSIX emulation + environments of sufficient completeness. + +- GHDL simulator (http://ghdl.free.fr) [optional if you use Modelsim]. + Provides the ``ghdl`` executable (has several Windows versions, with + 0.29.1 and 0.31 being the latest). It also installs GTKwave on Windows. + Note that the latest version (0.31) from + http://sourceforge.net/project/ghdl-updates/ does not include GTKwave. + +- Xilinx ISE (free ISE webpack is available from the Xilinx website): + http://www.xilinx.com) + The 14.6 version on Windows 7/64-bit is known to work.
trunk/doc/README Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/run/cordic_test_data.txt =================================================================== --- trunk/sim/rtl_sim/run/cordic_test_data.txt (nonexistent) +++ trunk/sim/rtl_sim/run/cordic_test_data.txt (revision 2) @@ -0,0 +1,689 @@ +0000 0000 26dd 0000 0000 3fff 0002 0000 +0000 0000 26dd 0000 0202 3ff6 0204 0000 +0000 0000 26dd 0000 0405 3fe0 0408 ffff +0000 0000 26dd 0000 0608 3fb5 0606 0000 +0000 0000 26dd 0000 080a 3f7f 0808 fffe +0000 0000 26dd 0000 0a0d 3f37 0a03 ffff +0000 0000 26dd 0000 0c10 3ede 0c01 fffe +0000 0000 26dd 0000 0e13 3e74 0df6 ffff +0000 0000 26dd 0000 1015 3dfe 0fee ffff +0000 0000 26dd 0000 1218 3d74 11dc 0000 +0000 0000 26dd 0000 141b 3cdb 13cb fffb +0000 0000 26dd 0000 161d 3c37 15ad ffff +0000 0000 26dd 0000 1820 3b80 1791 fffe +0000 0000 26dd 0000 1a23 3abc 196d ffff +0000 0000 26dd 0000 1c26 39e9 1b42 0000 +0000 0000 26dd 0000 1e28 3907 1d10 0000 +0000 0000 26dd 0000 202b 3812 1ed9 fffd +0000 0000 26dd 0000 222e 3716 2095 0000 +0000 0000 26dd 0000 2430 3608 2250 fffe +0000 0000 26dd 0000 2633 34ec 23fc ffff +0000 0000 26dd 0000 2836 33c7 259d 0004 +0000 0000 26dd 0000 2a39 3295 2736 0007 +0000 0000 26dd 0000 2c3b 314f 28cd fff9 +0000 0000 26dd 0000 2e3e 3002 2a56 fffe +0000 0000 26dd 0000 3041 2ea6 2bd1 ffff +0000 0000 26dd 0000 3243 2d42 2d41 0001 +0000 0000 26dd 0000 3446 2bcf 2ea8 0000 +0000 0000 26dd 0000 3649 2a56 3002 0003 +0000 0000 26dd 0000 384c 28cd 314f 0008 +0000 0000 26dd 0000 3a4e 2736 3295 fffa +0000 0000 26dd 0000 3c51 259d 33c7 fffd +0000 0000 26dd 0000 3e54 23fa 34ee 0000 +0000 0000 26dd 0000 4056 224c 360a fffe +0000 0000 26dd 0000 4259 2095 3716 0001 +0000 0000 26dd 0000 445c 1ed3 3818 fffc +0000 0000 26dd 0000 465f 1d0e 3907 ffff +0000 0000 26dd 0000 4861 1b42 39e9 0001 +0000 0000 26dd 0000 4a64 196b 3abc 0000 +0000 0000 26dd 0000 4c67 178b 3b82 fffd +0000 0000 26dd 0000 4e6a 15ab 3c37 0000 +0000 0000 26dd 0000 506c 13c3 3cdf fffc +0000 0000 26dd 0000 526f 11da 3d74 ffff +0000 0000 26dd 0000 5472 0fea 3dfe fffe +0000 0000 26dd 0000 5674 0df4 3e74 0000 +0000 0000 26dd 0000 5877 0bfb 3ee0 fffd +0000 0000 26dd 0000 5a7a 0a01 3f37 0000 +0000 0000 26dd 0000 5c7d 0804 3f7f ffff +0000 0000 26dd 0000 5e7f 0606 3fb5 0001 +0000 0000 26dd 0000 6082 0408 3fe0 0002 +0000 0000 26dd 0000 6285 0202 3ff6 ffff +0001 0000 0000 0000 0000 0000 0000 6f84 +0001 0000 0000 01f4 0000 033d fffe 649a +0001 0000 0000 03e8 0000 066f 0000 648c +0001 0000 0000 05dc 0000 09a7 0001 648c +0001 0000 0000 07d0 0000 0cde 0001 648c +0001 0000 0000 09c4 0000 1017 ffff 648a +0001 0000 0000 0bb8 0000 134e ffff 648a +0001 0000 0000 0dac 0000 1683 0001 648c +0001 0000 0000 0fa0 0000 19bd ffff 648a +0001 0000 0000 1194 0000 1cf3 0000 6486 +0001 0000 0000 1388 0000 202d 0000 6484 +0001 0000 0000 157c 0000 2363 0000 6486 +0001 0000 0000 1770 0000 269a ffff 648a +0001 0000 0000 1964 0000 29d0 0000 6486 +0001 0000 0000 1b58 0000 2d09 0000 6486 +0001 0000 01f4 0000 0000 033e fffe fffa +0001 0000 01f4 01f4 0000 048f 0000 3248 +0001 0000 01f4 03e8 0000 0736 ffff 46dc +0001 0000 01f4 05dc 0000 0a31 0001 4fe8 +0001 0000 01f4 07d0 0000 0d47 ffff 54dc +0001 0000 01f4 09c4 0000 106a 0000 57de +0001 0000 01f4 0bb8 0000 1394 0000 59f4 +0001 0000 01f4 0dac 0000 16bf 0000 5b70 +0001 0000 01f4 0fa0 0000 19f0 fffe 5c96 +0001 0000 01f4 1194 0000 1d21 0001 5d70 +0001 0000 01f4 1388 0000 2058 ffff 5e2a +0001 0000 01f4 157c 0000 238a 0000 5eb8 +0001 0000 01f4 1770 0000 26bc 0000 5f36 +0001 0000 01f4 1964 0000 29f7 ffff 5f9e +0001 0000 01f4 1b58 0000 2d29 ffff 5ffa +0001 0000 03e8 0000 0000 0671 0000 0010 +0001 0000 03e8 01f4 0000 0736 ffff 1db2 +0001 0000 03e8 03e8 0000 091d ffff 3240 +0001 0000 03e8 05dc 0000 0b9b 0000 3ee6 +0001 0000 03e8 07d0 0000 0e65 ffff 46dc +0001 0000 03e8 09c4 0000 1152 0001 4c2c +0001 0000 03e8 0bb8 0000 1460 fffe 4ff2 +0001 0000 03e8 0dac 0000 176f ffff 52b6 +0001 0000 03e8 0fa0 0000 1a89 0001 54d6 +0001 0000 03e8 1194 0000 1daa ffff 568a +0001 0000 03e8 1388 0000 20d0 0000 57e2 +0001 0000 03e8 157c 0000 23f8 0000 5902 +0001 0000 03e8 1770 0000 2724 ffff 59f4 +0001 0000 03e8 1964 0000 2a4f ffff 5ac2 +0001 0000 03e8 1b58 0000 2d7e 0001 5b70 +0001 0000 05dc 0000 0000 09ad ffff fffa +0001 0000 05dc 01f4 0000 0a31 0001 1490 +0001 0000 05dc 03e8 0000 0b9a 0000 25a8 +0001 0000 05dc 05dc 0000 0da7 0000 3248 +0001 0000 05dc 07d0 0000 101b ffff 3b58 +0001 0000 05dc 09c4 0000 12c3 0000 41f4 +0001 0000 05dc 0bb8 0000 1598 ffff 46dc +0001 0000 05dc 0dac 0000 1881 ffff 4aa0 +0001 0000 05dc 0fa0 0000 1b7c 0001 4d90 +0001 0000 05dc 1194 0000 1e8b fffd 4ff2 +0001 0000 05dc 1388 0000 2198 ffff 51e0 +0001 0000 05dc 157c 0000 24ae 0000 537c +0001 0000 05dc 1770 0000 27cc ffff 54dc +0001 0000 05dc 1964 0000 2aec ffff 5602 +0001 0000 05dc 1b58 0000 2e0e 0000 5702 +0001 0000 07d0 0000 0000 0ce3 ffff fffa +0001 0000 07d0 01f4 0000 0d46 ffff 0fb0 +0001 0000 07d0 03e8 0000 0e64 0001 1daa +0001 0000 07d0 05dc 0000 1017 ffff 2932 +0001 0000 07d0 07d0 0000 1234 0000 3242 +0001 0000 07d0 09c4 0000 149f 0000 3956 +0001 0000 07d0 0bb8 0000 1733 0000 3ee6 +0001 0000 07d0 0dac 0000 19f3 fffe 434e +0001 0000 07d0 0fa0 0000 1cc8 fffe 46dc +0001 0000 07d0 1194 0000 1fb1 ffff 49c2 +0001 0000 07d0 1388 0000 22a4 ffff 4c2c +0001 0000 07d0 157c 0000 25ab fffc 4e3c +0001 0000 07d0 1770 0000 28b6 ffff 4ff2 +0001 0000 07d0 1964 0000 2bc4 fffe 516e +0001 0000 07d0 1b58 0000 2ed9 ffff 52b8 +0001 0000 09c4 0000 0000 101b ffff 0000 +0001 0000 09c4 01f4 0000 1066 0000 0caa +0001 0000 09c4 03e8 0000 115a ffff 185a +0001 0000 09c4 05dc 0000 12c5 0000 2294 +0001 0000 09c4 07d0 0000 1498 0000 2b32 +0001 0000 09c4 09c4 0000 16c1 ffff 3246 +0001 0000 09c4 0bb8 0000 1922 ffff 3810 +0001 0000 09c4 0dac 0000 1baf 0000 3cd4 +0001 0000 09c4 0fa0 0000 1e5e 0000 40c4 +0001 0000 09c4 1194 0000 211d ffff 4412 +0001 0000 09c4 1388 0000 23fa 0000 46dc +0001 0000 09c4 157c 0000 26e2 fffe 493e +0001 0000 09c4 1770 0000 29d2 ffff 4b44 +0001 0000 09c4 1964 0000 2cce ffff 4d0a +0001 0000 09c4 1b58 0000 2fd1 0002 4e90 +0001 0000 0bb8 0000 0000 1351 ffff 0000 +0001 0000 0bb8 01f4 0000 1393 0000 0a94 +0001 0000 0bb8 03e8 0000 1460 fffe 149a +0001 0000 0bb8 05dc 0000 1596 0001 1daa +0001 0000 0bb8 07d0 0000 1735 0000 25a2 +0001 0000 0bb8 09c4 0000 1920 0001 2c76 +0001 0000 0bb8 0bb8 0000 1b4d ffff 3246 +0001 0000 0bb8 0dac 0000 1dab fffe 3730 +0001 0000 0bb8 0fa0 0000 202e 0000 3b5a +0001 0000 0bb8 1194 0000 22ce 0000 3ee4 +0001 0000 0bb8 1388 0000 2584 ffff 41f2 +0001 0000 0bb8 157c 0000 2850 ffff 4494 +0001 0000 0bb8 1770 0000 2b2a 0000 46dc +0001 0000 0bb8 1964 0000 2e12 0000 48dc +0001 0000 0bb8 1b58 0000 3100 0001 4a9c +0001 0000 0dac 0000 0000 1689 ffff 0000 +0001 0000 0dac 01f4 0000 16c1 0000 0918 +0001 0000 0dac 03e8 0000 176b ffff 11d4 +0001 0000 0dac 05dc 0000 1881 ffff 19ea +0001 0000 0dac 07d0 0000 19f0 fffe 213e +0001 0000 0dac 09c4 0000 1bab 0000 27b4 +0001 0000 0dac 0bb8 0000 1da9 0002 2d56 +0001 0000 0dac 0dac 0000 1fd8 0000 3248 +0001 0000 0dac 0fa0 0000 2235 ffff 3688 +0001 0000 0dac 1194 0000 24ae 0000 3a36 +0001 0000 0dac 1388 0000 2747 0000 3d72 +0001 0000 0dac 157c 0000 29f7 ffff 4044 +0001 0000 0dac 1770 0000 2cb5 fffe 42c0 +0001 0000 0dac 1964 0000 2f81 fffe 44ec +0001 0000 0dac 1b58 0000 325c ffff 46dc +0001 0000 0fa0 0000 0000 19c0 ffff 0000 +0001 0000 0fa0 01f4 0000 19f3 fffe 07f6 +0001 0000 0fa0 03e8 0000 1a88 fffe 0fb0 +0001 0000 0fa0 05dc 0000 1b80 ffff 16f6 +0001 0000 0fa0 07d0 0000 1cc7 0001 1daa +0001 0000 0fa0 09c4 0000 1e58 ffff 23c2 +0001 0000 0fa0 0bb8 0000 202d 0000 292c +0001 0000 0fa0 0dac 0000 2233 ffff 2e02 +0001 0000 0fa0 0fa0 0000 2466 0000 3242 +0001 0000 0fa0 1194 0000 26bd 0000 3606 +0001 0000 0fa0 1388 0000 2936 ffff 395a +0001 0000 0fa0 157c 0000 2bbf 0004 3c42 +0001 0000 0fa0 1770 0000 2e65 ffff 3ee6 +0001 0000 0fa0 1964 0000 311b 0002 4134 +0001 0000 0fa0 1b58 0000 33e1 0000 434e +0001 0000 1194 0000 0000 1cf6 0000 0002 +0001 0000 1194 01f4 0000 1d24 ffff 0716 +0001 0000 1194 03e8 0000 1daa 0001 0dfc +0001 0000 1194 05dc 0000 1e8b fffd 149a +0001 0000 1194 07d0 0000 1faf ffff 1ac8 +0001 0000 1194 09c4 0000 2121 ffff 2076 +0001 0000 1194 0bb8 0000 22ce 0000 25a2 +0001 0000 1194 0dac 0000 24b1 ffff 2a50 +0001 0000 1194 0fa0 0000 26be ffff 2e84 +0001 0000 1194 1194 0000 28f3 0000 3242 +0001 0000 1194 1388 0000 2b4a 0000 35a2 +0001 0000 1194 157c 0000 2db9 0000 38a4 +0001 0000 1194 1770 0000 3043 ffff 3b5a +0001 0000 1194 1964 0000 32db 0000 3dc4 +0001 0000 1194 1b58 0000 358a 0000 3ff2 +0001 0000 1388 0000 0000 202e 0000 0002 +0001 0000 1388 01f4 0000 205a ffff 0668 +0001 0000 1388 03e8 0000 20ce 0000 0ca4 +0001 0000 1388 05dc 0000 2195 ffff 12a8 +0001 0000 1388 07d0 0000 22ad 0000 185a +0001 0000 1388 09c4 0000 23f8 0000 1daa +0001 0000 1388 0bb8 0000 2585 ffff 2298 +0001 0000 1388 0dac 0000 2745 0000 2714 +0001 0000 1388 0fa0 0000 2931 ffff 2b30 +0001 0000 1388 1194 0000 2b46 0001 2ee4 +0001 0000 1388 1388 0000 2d7f 0000 3242 +0001 0000 1388 157c 0000 2fd6 fffa 3556 +0001 0000 1388 1770 0000 3241 0000 3810 +0001 0000 1388 1964 0000 34c6 0000 3a92 +0001 0000 1388 1b58 0000 375a fffe 3cd8 +0001 0000 157c 0000 0000 2366 ffff 0000 +0001 0000 157c 01f4 0000 2389 0000 05ce +0001 0000 157c 03e8 0000 23fa 0000 0b84 +0001 0000 157c 05dc 0000 24ae ffff 110c +0001 0000 157c 07d0 0000 25ad fffc 165a +0001 0000 157c 09c4 0000 26dd 0002 1b48 +0001 0000 157c 0bb8 0000 284e ffff 1ff6 +0001 0000 157c 0dac 0000 29f7 ffff 2446 +0001 0000 157c 0fa0 0000 2bc6 fffc 2844 +0001 0000 157c 1194 0000 2db6 0000 2be2 +0001 0000 157c 1388 0000 2fd3 fffa 2f3e +0001 0000 157c 157c 0000 320c 0000 3240 +0001 0000 157c 1770 0000 345f ffff 350a +0001 0000 157c 1964 0000 36c9 0000 3794 +0001 0000 157c 1b58 0000 3947 ffff 39e8 +0001 0000 1770 0000 0000 269d ffff 0000 +0001 0000 1770 01f4 0000 26be 0000 0550 +0001 0000 1770 03e8 0000 2722 ffff 0a94 +0001 0000 1770 05dc 0000 27ca 0000 0faa +0001 0000 1770 07d0 0000 28b6 ffff 149a +0001 0000 1770 09c4 0000 29d1 ffff 1944 +0001 0000 1770 0bb8 0000 2b29 0000 1daa +0001 0000 1770 0dac 0000 2caf 0002 21c6 +0001 0000 1770 0fa0 0000 2e67 ffff 25a2 +0001 0000 1770 1194 0000 3040 ffff 292e +0001 0000 1770 1388 0000 3240 ffff 2c76 +0001 0000 1770 157c 0000 345e ffff 2f7e +0001 0000 1770 1770 0000 3697 0001 3242 +0001 0000 1770 1964 0000 38ee ffff 34d6 +0001 0000 1770 1b58 0000 3b52 fffd 3730 +0001 0000 1964 0000 0000 29d4 0000 0000 +0001 0000 1964 01f4 0000 29f7 ffff 04ec +0001 0000 1964 03e8 0000 2a51 0000 09c4 +0001 0000 1964 05dc 0000 2aeb ffff 0e88 +0001 0000 1964 07d0 0000 2bc0 0002 1318 +0001 0000 1964 09c4 0000 2cd0 ffff 177e +0001 0000 1964 0bb8 0000 2e0e 0000 1baa +0001 0000 1964 0dac 0000 2f81 fffe 1fa0 +0001 0000 1964 0fa0 0000 311d fffe 2352 +0001 0000 1964 1194 0000 32e0 0000 26c2 +0001 0000 1964 1388 0000 34c0 0000 29f4 +0001 0000 1964 157c 0000 36c8 0000 2cf2 +0001 0000 1964 1770 0000 38e6 0001 2fb0 +0001 0000 1964 1964 0000 3b24 0000 3242 +0001 0000 1964 1b58 0000 3d79 ffff 34a4 +0001 0000 1b58 0000 0000 2d0c 0000 0000 +0001 0000 1b58 01f4 0000 2d25 0001 048c +0001 0000 1b58 03e8 0000 2d81 ffff 0916 +0001 0000 1b58 05dc 0000 2e12 0000 0d84 +0001 0000 1b58 07d0 0000 2ed5 ffff 11d0 +0001 0000 1b58 09c4 0000 2fd5 ffff 15f6 +0001 0000 1b58 0bb8 0000 3100 ffff 19ea +0001 0000 1b58 0dac 0000 3259 0000 1daa +0001 0000 1b58 0fa0 0000 33de 0000 2138 +0001 0000 1b58 1194 0000 358b 0000 2494 +0001 0000 1b58 1388 0000 3757 fffe 27b2 +0001 0000 1b58 157c 0000 3946 ffff 2aa0 +0001 0000 1b58 1770 0000 3b53 fffd 2d5e +0001 0000 1b58 1964 0000 3d73 0002 2fe2 +0001 0000 1b58 1b58 0000 3fb0 0000 3242 +0001 0002 1064 f064 0000 054b fca2 b875 +0001 0002 10c8 f0c8 0000 0647 fd9f b875 +0001 0002 112c f12c 0000 0745 fe9c b875 +0001 0002 1190 f190 0000 0840 ff9b b875 +0001 0002 11f4 f1f4 0000 093c 0000 bca5 +0001 0002 1258 f258 0000 0a1d ffff c287 +0001 0002 12bc f2bc 0000 0aee fffe c777 +0001 0002 1320 f320 0000 0bb1 ffff cbb9 +0001 0002 1384 f384 0000 0c66 fffe cf89 +0001 0002 13e8 f3e8 0000 0d16 0000 d2eb +0001 0002 144c f44c 0000 0db8 ffff d5eb +0001 0002 14b0 f4b0 0000 0e52 ffff d8ad +0001 0002 1514 f514 0000 0ee9 fffd db4d +0001 0002 1578 f578 0000 0f7b 0001 dda5 +0001 0002 15dc f5dc 0000 1006 ffff dfdd +0001 0002 1640 f640 0000 108b 0000 e1ef +0001 0002 16a4 f6a4 0000 1111 0000 e3df +0001 0002 1708 f708 0000 118b ffff e5af +0001 0002 176c f76c 0000 1209 0000 e76f +0001 0002 17d0 f7d0 0000 1282 ffff e917 +0001 0002 1834 f834 0000 12f9 0000 eaa9 +0001 0002 1898 f898 0000 136b 0000 ec29 +0001 0002 18fc f8fc 0000 13d8 0000 ed89 +0001 0002 1960 f960 0000 1447 0000 eee9 +0001 0002 19c4 f9c4 0000 14ae fffd f039 +0001 0002 1a28 fa28 0000 151b 0000 f17b +0001 0002 1a8c fa8c 0000 1584 0000 f2b3 +0001 0002 1af0 faf0 0000 15e8 0000 f3db +0001 0002 1b54 fb54 0000 164e 0002 f4fb +0001 0002 1bb8 fbb8 0000 16aa ffff f60b +0001 0002 1c1c fc1c 0000 170b fffe f71b +0001 0002 1c80 fc80 0000 1769 ffff f81b +0001 0002 1ce4 fce4 0000 17c8 ffff f91b +0001 0002 1d48 fd48 0000 1823 0000 fa0d +0001 0002 1dac fdac 0000 1880 0001 fafd +0001 0002 1e10 fe10 0000 18d4 ffff fbdd +0001 0002 1e74 fe74 0000 192e 0000 fcc5 +0001 0002 1ed8 fed8 0000 1982 fffe fd9d +0001 0002 1f3c ff3c 0000 19d9 fffe fe6d +0001 0002 1fa0 ffa0 0000 1a2b fffe ff3d +0001 0002 2004 0004 0000 1a7b fffd 0003 +0001 0002 2068 0068 0000 1acd fffe 00c3 +0001 0002 20cc 00cc 0000 1b1e ffff 0183 +0001 0002 2130 0130 0000 1b71 ffff 0243 +0001 0002 2194 0194 0000 1bc2 0000 0303 +0001 0002 21f8 01f8 0000 1c13 0000 03bb +0001 0002 225c 025c 0000 1c5e fffe 0463 +0001 0002 22c0 02c0 0000 1caa fffe 0513 +0001 0002 2324 0324 0000 1cfb 0000 05c3 +0001 0002 2388 0388 0000 1d46 0002 0663 +0001 0002 23ec 03ec 0000 1d8f 0001 0705 +0001 0002 2450 0450 0000 1dd9 0002 07a5 +0001 0002 24b4 04b4 0000 1e23 0000 0845 +0001 0002 2518 0518 0000 1e69 0001 08d5 +0001 0002 257c 057c 0000 1eaf ffff 096d +0001 0002 25e0 05e0 0000 1ef7 fffc 0a05 +0001 0002 2644 0644 0000 1f42 0001 0a95 +0001 0002 26a8 06a8 0000 1f87 0002 0b25 +0001 0002 270c 070c 0000 1fc9 ffff 0bad +0001 0002 2770 0770 0000 2010 ffff 0c39 +0001 0002 27d4 07d4 0000 2056 0000 0cc1 +0001 0002 2838 0838 0000 2094 0000 0d45 +0001 0002 289c 089c 0000 20d8 ffff 0dc9 +0001 0002 2900 0900 0000 211c 0000 0e49 +0001 0002 2964 0964 0000 2159 fffc 0ec7 +0001 0002 29c8 09c8 0000 21a0 0000 0f43 +0001 0002 2a2c 0a2c 0000 21e2 ffff 0fc3 +0001 0002 2a90 0a90 0000 2223 0000 103b +0001 0002 2af4 0af4 0000 2264 ffff 10b3 +0001 0002 2b58 0b58 0000 22a3 ffff 1127 +0001 0001 7d00 4000 0000 7d00 fffd 20c6 +0001 0001 7c06 4000 0000 7c06 0000 2106 +0001 0001 7b0c 4000 0000 7b0c fffd 214a +0001 0001 7a12 4000 0000 7a12 0000 218e +0001 0001 7918 4000 0000 7918 0000 21d2 +0001 0001 781e 4000 0000 781e fffd 221a +0001 0001 7724 4000 0000 7724 fffd 2262 +0001 0001 762a 4000 0000 762a ffff 22aa +0001 0001 7530 4000 0000 7530 fffe 22f6 +0001 0001 7436 4000 0000 7436 0003 233e +0001 0001 733c 4000 0000 733c 0000 238a +0001 0001 7242 4000 0000 7242 ffff 23da +0001 0001 7148 4000 0000 7148 0003 2426 +0001 0001 704e 4000 0000 704e fffc 247a +0001 0001 6f54 4000 0000 6f54 0000 24ca +0001 0001 6e5a 4000 0000 6e5a 0002 251e +0001 0001 6d60 4000 0000 6d60 0002 2572 +0001 0001 6c66 4000 0000 6c66 ffff 25ca +0001 0001 6b6c 4000 0000 6b6c fffc 2622 +0001 0001 6a72 4000 0000 6a72 fffd 267e +0001 0001 6978 4000 0000 6978 0001 26d6 +0001 0001 687e 4000 0000 687e 0002 2732 +0001 0001 6784 4000 0000 6784 fffe 2792 +0001 0001 668a 4000 0000 668a 0002 27f2 +0001 0001 6590 4000 0000 6590 fffd 2856 +0001 0001 6496 4000 0000 6496 fffe 28ba +0001 0001 639c 4000 0000 639c ffff 291e +0001 0001 62a2 4000 0000 62a2 0001 2986 +0001 0001 61a8 4000 0000 61a8 0001 29f2 +0001 0001 60ae 4000 0000 60ae 0000 2a5e +0001 0001 5fb4 4000 0000 5fb4 ffff 2ace +0001 0001 5eba 4000 0000 5eba 0003 2b3e +0001 0001 5dc0 4000 0000 5dc0 fffe 2bb2 +0001 0001 5cc6 4000 0000 5cc6 ffff 2c26 +0001 0001 5bcc 4000 0000 5bcc 0002 2c9e +0001 0001 5ad2 4000 0000 5ad2 ffff 2d1a +0001 0001 59d8 4000 0000 59d8 fffd 2d9a +0001 0001 58de 4000 0000 58de 0002 2e16 +0001 0001 57e4 4000 0000 57e4 0000 2e9a +0001 0001 56ea 4000 0000 56ea fffe 2f22 +0001 0001 55f0 4000 0000 55f0 0001 2faa +0001 0001 54f6 4000 0000 54f6 fffe 3036 +0001 0001 53fc 4000 0000 53fc 0001 30c2 +0001 0001 5302 4000 0000 5302 fffe 315a +0001 0001 5208 4000 0000 5208 0001 31ee +0001 0001 510e 4000 0000 510e fffd 328a +0001 0001 5014 4000 0000 5014 0001 3326 +0001 0001 4f1a 4000 0000 4f1a 0001 33c6 +0001 0001 4e20 4000 0000 4e20 0000 346e +0001 0001 4d26 4000 0000 4d26 fffe 351a +0001 0001 4c2c 4000 0000 4c2c ffff 35c6 +0001 0001 4b32 4000 0000 4b32 fffe 367e +0001 0001 4a38 4000 0000 4a38 ffff 3732 +0001 0001 493e 4000 0000 493e fffd 37f2 +0001 0001 4844 4000 0000 4844 0001 38ae +0001 0001 474a 4000 0000 474a fffe 397a +0001 0001 4650 4000 0000 4650 fffc 3a42 +0001 0001 4556 4000 0000 4556 fffe 3b16 +0001 0001 445c 4000 0000 445c ffff 3bee +0001 0001 4362 4000 0000 4362 ffff 3cca +0001 0001 4268 4000 0000 4268 fffe 3db2 +0001 0001 416e 4000 0000 416e fffe 3e9e +0001 0001 4074 4000 0000 4074 fffe 3f92 +0001 0001 3f7a 4000 0000 3f7a fffd 4082 +0001 0001 3e80 4000 0000 3e80 fffe 418a +0001 0001 3d86 4000 0000 3d86 fffe 4292 +0001 0001 3c8c 4000 0000 3c8c ffff 43a6 +0001 0001 3b92 4000 0000 3b92 fffe 44c2 +0001 0001 3a98 4000 0000 3a98 ffff 45ea +0001 0001 399e 4000 0000 399e ffff 4716 +0001 0001 38a4 4000 0000 38a4 0002 484e +0001 0001 37aa 4000 0000 37aa ffff 4996 +0001 0001 36b0 4000 0000 36b0 0001 4ae6 +0001 0001 35b6 4000 0000 35b6 fffd 4c42 +0001 0001 34bc 4000 0000 34bc 0000 4dae +0001 0001 33c2 4000 0000 33c2 ffff 4f22 +0001 0001 32c8 4000 0000 32c8 fffe 50aa +0001 0001 31ce 4000 0000 31ce 0000 523a +0001 0001 30d4 4000 0000 30d4 0000 53e6 +0001 0001 2fda 4000 0000 2fda 0000 559a +0001 0001 2ee0 4000 0000 2ee0 ffff 5762 +0001 0001 2de6 4000 0000 2de6 0001 593e +0001 0001 2cec 4000 0000 2cec fffe 5b32 +0001 0001 2bf2 4000 0000 2bf2 ffff 5d36 +0001 0001 2af8 4000 0000 2af8 0000 5f56 +0001 0001 29fe 4000 0000 29fe 0000 6186 +0001 0001 2904 4000 0000 2904 0000 63de +0001 0001 280a 4000 0000 280a 0000 664e +0001 0001 2710 4000 0000 2710 ffff 68de +0001 0001 2616 4000 0000 2616 0000 6b8a +0001 0001 251c 4000 0000 251c 0000 6e62 +0001 0001 2422 4000 0000 2422 0000 715e +0001 0001 2328 4000 0000 2328 fffd 7482 +0001 0001 222e 4000 0000 222e 0000 77da +0001 0001 2134 4000 0000 2134 ffff 7b62 +0001 0001 203a 4000 0000 203a ffff 7f22 +0001 0002 1fa0 ffa0 0000 1a2b fffe ff3d +0001 0001 1f98 4000 0000 1f98 00d8 7ffe +0001 0002 2068 0068 0000 1acd fffe 00c3 +0001 0001 205c 4000 0000 205c ffff 7e9a +0001 0002 2130 0130 0000 1b71 ffff 0243 +0001 0001 2122 4000 0000 2122 0000 7ba2 +0001 0002 21f8 01f8 0000 1c13 0000 03bb +0001 0001 21e6 4000 0000 21e6 ffff 78da +0001 0002 22c0 02c0 0000 1caa fffe 0513 +0001 0001 229c 4000 0000 229c 0000 765a +0001 0002 2388 0388 0000 1d46 0002 0663 +0001 0001 2358 4000 0000 2358 0000 73e6 +0001 0002 2450 0450 0000 1dd9 0002 07a5 +0001 0001 240a 4000 0000 240a 0000 71a6 +0001 0002 2518 0518 0000 1e69 0001 08d5 +0001 0001 24b8 4000 0000 24b8 0000 6f92 +0001 0002 25e0 05e0 0000 1ef7 fffc 0a05 +0001 0001 2563 4000 0000 2563 ffff 6d92 +0001 0002 26a8 06a8 0000 1f87 0002 0b25 +0001 0001 2611 4000 0000 2611 ffff 6b9e +0001 0002 2770 0770 0000 2010 ffff 0c39 +0001 0001 26b6 4000 0000 26b6 0000 69ce +0001 0002 2838 0838 0000 2094 0000 0d45 +0001 0001 2756 4000 0000 2756 0000 681e +0001 0002 2900 0900 0000 211c 0000 0e49 +0001 0001 27fa 4000 0000 27fa 0000 667a +0001 0002 29c8 09c8 0000 21a0 0000 0f43 +0001 0001 2899 4000 0000 2899 0000 64e6 +0001 0002 2a90 0a90 0000 2223 0000 103b +0001 0001 2937 4000 0000 2937 0000 6362 +0001 0002 2b58 0b58 0000 22a3 ffff 1127 +0001 0001 29d2 4000 0000 29d2 ffff 61f6 +0001 0002 2c20 0c20 0000 2320 ffff 120f +0001 0001 2a69 4000 0000 2a69 ffff 6092 +0001 0002 2ce8 0ce8 0000 2398 ffff 12e7 +0001 0001 2afa 4000 0000 2afa ffff 5f52 +0001 0002 2db0 0db0 0000 2417 ffff 13c7 +0001 0001 2b93 4000 0000 2b93 fffc 5e02 +0001 0002 2e78 0e78 0000 248f ffff 149f +0001 0001 2c24 4000 0000 2c24 ffff 5cce +0001 0002 2f40 0f40 0000 2505 0000 156b +0001 0001 2cb3 4000 0000 2cb3 0000 5ba2 +0001 0002 3008 1008 0000 257c ffff 1637 +0001 0001 2d42 4000 0000 2d42 fffc 5a82 +0001 0002 30d0 10d0 0000 25ef ffff 16f9 +0001 0001 2dcd 4000 0000 2dcd ffff 5972 +0001 0002 3198 1198 0000 2663 0000 17b9 +0001 0001 2e59 4000 0000 2e59 0002 585e +0001 0002 3260 1260 0000 26d4 ffff 1879 +0001 0001 2ee2 4000 0000 2ee2 0002 575e +0001 0002 3328 1328 0000 2745 ffff 1931 +0001 0001 2f6a 4000 0000 2f6a ffff 5662 +0001 0002 33f0 13f0 0000 27b4 ffff 19e5 +0001 0001 2ff0 4000 0000 2ff0 ffff 5576 +0001 0002 34b8 14b8 0000 2826 ffff 1a99 +0001 0001 307a 4000 0000 307a ffff 547e +0001 0002 3580 1580 0000 288e ffff 1b41 +0001 0001 30f7 4000 0000 30f7 ffff 53aa +0001 0002 3648 1648 0000 28f8 ffff 1be9 +0001 0001 3177 4000 0000 3177 0001 52ce +0001 0002 3710 1710 0000 2968 0000 1c91 +0001 0001 31ff 4000 0000 31ff 0001 51ee +0001 0002 37d8 17d8 0000 29d1 ffff 1d35 +0001 0001 327d 4000 0000 327d 0001 511e +0001 0002 38a0 18a0 0000 2a3b 0000 1dd5 +0001 0001 32fd 4000 0000 32fd fffe 5052 +0001 0002 3968 1968 0000 2a9f 0000 1e6d +0001 0001 3376 4000 0000 3376 ffff 4f9a +0001 0002 3a30 1a30 0000 2b05 0000 1f07 +0001 0001 33f1 4000 0000 33f1 0001 4ede +0001 0002 3af8 1af8 0000 2b68 fffe 1f9b +0001 0001 3469 4000 0000 3469 0001 4e26 +0001 0002 3bc0 1bc0 0000 2bd0 0000 202f +0001 0001 34e6 4000 0000 34e6 0000 4d6e +0001 0002 3c88 1c88 0000 2c35 ffff 20c3 +0001 0001 3560 4000 0000 3560 0000 4cbe +0001 0002 3d50 1d50 0000 2c97 0000 214f +0001 0001 35d7 4000 0000 35d7 fffe 4c12 +0001 0002 3e18 1e18 0000 2cf7 fffe 21db +0001 0001 364b 4000 0000 364b 0000 4b72 +0001 0002 3ee0 1ee0 0000 2d5a 0000 2267 +0001 0001 36c2 4000 0000 36c2 ffff 4ace +0001 0002 3fa8 1fa8 0000 2db9 ffff 22eb +0001 0001 3735 4000 0000 3735 ffff 4a32 +0001 0002 4070 2070 0000 2e1b 0002 2373 +0001 0001 37ab 4000 0000 37ab 0000 4992 +0001 0002 4138 2138 0000 2e79 0002 23f3 +0001 0001 381d 4000 0000 381d 0001 48fe +0001 0002 4200 2200 0000 2ed2 fffd 2473 +0001 0001 3888 4000 0000 3888 ffff 4876 +0001 0002 42c8 22c8 0000 2f35 0003 24f3 +0001 0001 3900 4000 0000 3900 0000 47de +0001 0002 4390 2390 0000 2f93 0003 2573 +0001 0001 3971 4000 0000 3971 fffe 4752 +0001 0002 4458 2458 0000 2fee 0000 25f3 +0001 0001 39df 4000 0000 39df 0001 46c6 +0001 0002 4520 2520 0000 3048 ffff 2667 +0001 0001 3a4c 4000 0000 3a4c fffd 4642 +0001 0002 45e8 25e8 0000 30a1 ffff 26df +0001 0001 3ab7 4000 0000 3ab7 fffe 45c2 +0001 0002 46b0 26b0 0000 30fc 0000 2753 +0001 0001 3b25 4000 0000 3b25 fffc 4542 +0001 0002 4778 2778 0000 3150 ffff 27c5 +0001 0001 3b8a 4000 0000 3b8a 0000 44ca +0001 0002 4840 2840 0000 31ab 0000 2839 +0001 0001 3bf8 4000 0000 3bf8 0000 444a +0001 0002 4908 2908 0000 3204 ffff 28ad +0001 0001 3c64 4000 0000 3c64 ffff 43d6 +0001 0002 49d0 29d0 0000 325c ffff 291d +0001 0001 3cce 4000 0000 3cce ffff 435e +0001 0002 4a98 2a98 0000 32b1 ffff 2989 +0001 0001 3d35 4000 0000 3d35 ffff 42ee +0001 0002 4b60 2b60 0000 330b 0002 29f5 +0001 0001 3da1 4000 0000 3da1 fffe 427a +0001 0002 4c28 2c28 0000 3361 0000 2a61 +0001 0001 3e09 4000 0000 3e09 ffff 4206 +0001 0002 4cf0 2cf0 0000 33b5 0000 2acd +0001 0001 3e6f 4000 0000 3e6f ffff 419a +0001 0002 4db8 2db8 0000 340c ffff 2b35 +0001 0001 3ed8 4000 0000 3ed8 ffff 412e +0001 0002 4e80 2e80 0000 345b 0000 2b95 +0001 0001 3f37 4000 0000 3f37 0001 40c6 +0001 0002 4f48 2f48 0000 34af ffff 2bfd +0001 0001 3f9c 4000 0000 3f9c fffe 4062 +0001 0002 5010 3010 0000 3505 0000 2c65 +0001 0001 4004 4000 0000 4004 ffff 3ffe +0001 0002 50d8 30d8 0000 3557 ffff 2cc9 +0001 0001 4067 4000 0000 4067 ffff 3f9e +0001 0002 51a0 31a0 0000 35ab ffff 2d2d +0001 0001 40cd 4000 0000 40cd 0001 3f36 +0001 0002 5268 3268 0000 35f6 0000 2d85 +0001 0001 4127 4000 0000 4127 ffff 3ee2 +0001 0002 5330 3330 0000 364d ffff 2ded +0001 0001 4190 4000 0000 4190 0001 3e7a +0001 0002 53f8 33f8 0000 369d ffff 2e4d +0001 0001 41f1 4000 0000 41f1 fffe 3e1e +0001 0002 54c0 34c0 0000 36ec ffff 2ea9 +0001 0001 4250 4000 0000 4250 ffff 3dc6 +0001 0002 5588 3588 0000 373d ffff 2f05 +0001 0001 42b2 4000 0000 42b2 0001 3d6a +0001 0002 5650 3650 0000 378d 0000 2f61 +0001 0001 4313 4000 0000 4313 ffff 3d12 +0001 0002 5718 3718 0000 37d6 fffd 2fb7 +0001 0001 436b 4000 0000 436b ffff 3cc2 +0001 0002 57e0 37e0 0000 3827 0000 300f +0001 0001 43cd 4000 0000 43cd 0001 3c6a +0001 0002 58a8 38a8 0000 3875 ffff 3067 +0001 0001 442b 4000 0000 442b 0001 3c16 +0001 0002 5970 3970 0000 38c3 ffff 30c3 +0001 0001 4489 4000 0000 4489 fffe 3bc6 +0001 0002 5a38 3a38 0000 390f 0000 3117 +0001 0001 44e5 4000 0000 44e5 0000 3b76 +0001 0002 5b00 3b00 0000 3960 ffff 3173 +0001 0001 4547 4000 0000 4547 fffe 3b22 +0001 0002 5bc8 3bc8 0000 39a9 ffff 31c7 +0001 0001 459f 4000 0000 459f fffe 3ada +0001 0002 5c90 3c90 0000 39f4 ffff 3217 +0001 0001 45f9 4000 0000 45f9 fffe 3a8a +0001 0002 5d58 3d58 0000 3a42 0000 326b +0001 0001 4658 4000 0000 4658 0001 3a3a +0001 0002 5e20 3e20 0000 3a8b 0000 32bb +0001 0001 46b0 4000 0000 46b0 0001 39f2 +0001 0002 5ee8 3ee8 0000 3ad7 0000 330f +0001 0001 470b 4000 0000 470b fffe 39aa +0001 0002 5fb0 3fb0 0000 3b24 0000 3363 +0001 0001 4768 4000 0000 4768 0000 395e +0001 0002 6078 4078 0000 3b6a ffff 33af +0001 0001 47bd 4000 0000 47bd 0001 3916 +0001 0002 6140 4140 0000 3bb4 ffff 33ff +0001 0001 4816 4000 0000 4816 0000 38d2 +0001 0002 6208 4208 0000 3bfd ffff 344b +0001 0001 486e 4000 0000 486e 0000 388e +0001 0002 62d0 42d0 0000 3c45 ffff 349b +0001 0001 48c5 4000 0000 48c5 ffff 384a +0001 0002 6398 4398 0000 3c91 0001 34e7 +0001 0001 4921 4000 0000 4921 fffe 3802 +0001 0002 6460 4460 0000 3cda ffff 3537 +0001 0001 4979 4000 0000 4979 ffff 37c2 +0001 0002 6528 4528 0000 3d23 ffff 3583 +0001 0001 49d1 4000 0000 49d1 0002 377e +0001 0002 65f0 45f0 0000 3d65 ffff 35c7 +0001 0001 4a21 4000 0000 4a21 fffe 3742 +0001 0002 66b8 46b8 0000 3db0 ffff 3617 +0001 0001 4a7c 4000 0000 4a7c 0003 36fe +0001 0002 6780 4780 0000 3df6 ffff 365f +0001 0001 4ad0 4000 0000 4ad0 fffd 36c2 +0001 0002 6848 4848 0000 3e3e 0002 36a7 +0001 0001 4b27 4000 0000 4b27 fffd 3682 +0001 0002 6910 4910 0000 3e85 0000 36ef +0001 0001 4b7d 4000 0000 4b7d ffff 3642 +0001 0002 69d8 49d8 0000 3ec9 fffe 3737 +0001 0001 4bcf 4000 0000 4bcf ffff 3606 +0001 0002 6aa0 4aa0 0000 3f12 ffff 377f +0001 0001 4c27 4000 0000 4c27 0000 35ca +0001 0002 6b68 4b68 0000 3f53 ffff 37c1 +0001 0001 4c76 4000 0000 4c76 0001 3592 +0001 0002 6c30 4c30 0000 3f9c 0004 3809 +0001 0001 4cce 4000 0000 4cce ffff 3556 +0001 0002 6cf8 4cf8 0000 3fde ffff 384d +0001 0001 4d1d 4000 0000 4d1d 0001 351e +0001 0002 6dc0 4dc0 0000 4021 0000 3891 +0001 0001 4d6e 4000 0000 4d6e 0000 34e6 +0001 0002 6e88 4e88 0000 4067 0001 38d5 +0001 0001 4dc3 4000 0000 4dc3 ffff 34ae +0001 0002 6f50 4f50 0000 40aa 0001 3919 +0001 0001 4e14 4000 0000 4e14 0001 3476 +0001 0002 7018 5018 0000 40f0 0000 395d +0001 0001 4e68 4000 0000 4e68 0000 343e +0001 0002 70e0 50e0 0000 4131 0001 399d +0001 0001 4eb7 4000 0000 4eb7 0001 3406 +0001 0002 71a8 51a8 0000 4176 ffff 39e1 +0001 0001 4f0a 4000 0000 4f0a 0000 33d2 +0001 0002 7270 5270 0000 41b8 0000 3a21 +0001 0001 4f5a 4000 0000 4f5a 0002 339e +0001 0002 7338 5338 0000 41fc fffe 3a65 +0001 0001 4fac 4000 0000 4fac 0000 336a +0001 0002 7400 5400 0000 423d 0001 3aa1 +0001 0001 4ffa 4000 0000 4ffa fffe 333a +0001 0002 74c8 54c8 0000 4281 0001 3ae1 +0001 0001 504c 4000 0000 504c 0000 3302 +0001 0002 7590 5590 0000 42c3 fffe 3b25 +0001 0001 509c 4000 0000 509c fffd 32d2 +0001 0002 7658 5658 0000 4306 ffff 3b61 +0001 0001 50ed 4000 0000 50ed ffff 329e +0001 0002 7720 5720 0000 4343 0000 3b9d +0001 0001 5137 4000 0000 5137 fffd 3272 +0001 0002 77e8 57e8 0000 4385 0000 3bdd +0001 0001 5186 4000 0000 5186 0001 323e +0001 0002 78b0 58b0 0000 43c5 0000 3c19 +0001 0001 51d4 4000 0000 51d4 fffe 320e +0001 0002 7978 5978 0000 4409 fffe 3c59 +0001 0001 5226 4000 0000 5226 ffff 31de +0001 0002 7a40 5a40 0000 4447 fffe 3c95 +0001 0001 5271 4000 0000 5271 0002 31ae +0001 0002 7b08 5b08 0000 4489 fffe 3cd1 +0001 0001 52c0 4000 0000 52c0 fffc 3182 +0001 0002 7bd0 5bd0 0000 44c6 fffe 3d0d +0001 0001 530a 4000 0000 530a 0001 3152 +0001 0002 7c98 5c98 0000 4509 fffe 3d49 +0001 0001 535b 4000 0000 535b 0000 3122 +0001 0002 7d60 5d60 0000 4549 ffff 3d85 +0001 0001 53a8 4000 0000 53a8 0002 30f6 +0001 0002 7e28 5e28 0000 4587 fffe 3dbd +0001 0001 53f3 4000 0000 53f3 ffff 30ca +0001 0002 7ef0 5ef0 0000 45c6 ffff 3df5 +0001 0001 543f 4000 0000 543f 0000 309e +0001 0002 7fb8 5fb8 0000 4605 0001 3e2d +0001 0001 548b 4000 0000 548b 0000 3072
trunk/sim/rtl_sim/run/cordic_test_data.txt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/run/cordic.sh =================================================================== --- trunk/sim/rtl_sim/run/cordic.sh (nonexistent) +++ trunk/sim/rtl_sim/run/cordic.sh (revision 2) @@ -0,0 +1,18 @@ +# File automatically generated by "cdfg2hdl". +# Filename: cordic +# Author: Nikolaos Kavvadias (C) 2009, 2010, 2011, 2012, 2013, 2014 + +#!/bin/bash + +make -f ../bin/cordic.mk clean +make -f ../bin/cordic.mk init +make -f ../bin/cordic.mk run + +if [ "$SECONDS" -eq 1 ] +then + units=second +else + units=seconds +fi +echo "This script has been running for $SECONDS $units." +exit 0
trunk/sim/rtl_sim/run/cordic.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/out/cordic_alg_test_results.txt =================================================================== --- trunk/sim/rtl_sim/out/cordic_alg_test_results.txt (nonexistent) +++ trunk/sim/rtl_sim/out/cordic_alg_test_results.txt (revision 2) @@ -0,0 +1,1379 @@ + direction=0000 mode=0000 xin=26DD yin=0000 zin=0000 xout=3FFF xout_ref=3FFF yout=0002 yout_ref=0002 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0202 xout=3FF6 xout_ref=3FF6 yout=0204 yout_ref=0204 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0405 xout=3FE0 xout_ref=3FE0 yout=0408 yout_ref=0408 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0608 xout=3FB5 xout_ref=3FB5 yout=0606 yout_ref=0606 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=080A xout=3F7F xout_ref=3F7F yout=0808 yout_ref=0808 zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0A0D xout=3F37 xout_ref=3F37 yout=0A03 yout_ref=0A03 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0C10 xout=3EDE xout_ref=3EDE yout=0C01 yout_ref=0C01 zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=0E13 xout=3E74 xout_ref=3E74 yout=0DF6 yout_ref=0DF6 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1015 xout=3DFE xout_ref=3DFE yout=0FEE yout_ref=0FEE zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1218 xout=3D74 xout_ref=3D74 yout=11DC yout_ref=11DC zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=141B xout=3CDB xout_ref=3CDB yout=13CB yout_ref=13CB zout=FFFB zout_ref=FFFB +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=161D xout=3C37 xout_ref=3C37 yout=15AD yout_ref=15AD zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1820 xout=3B80 xout_ref=3B80 yout=1791 yout_ref=1791 zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1A23 xout=3ABC xout_ref=3ABC yout=196D yout_ref=196D zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1C26 xout=39E9 xout_ref=39E9 yout=1B42 yout_ref=1B42 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=1E28 xout=3907 xout_ref=3907 yout=1D10 yout_ref=1D10 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=202B xout=3812 xout_ref=3812 yout=1ED9 yout_ref=1ED9 zout=FFFD zout_ref=FFFD +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=222E xout=3716 xout_ref=3716 yout=2095 yout_ref=2095 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2430 xout=3608 xout_ref=3608 yout=2250 yout_ref=2250 zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2633 xout=34EC xout_ref=34EC yout=23FC yout_ref=23FC zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2836 xout=33C7 xout_ref=33C7 yout=259D yout_ref=259D zout=0004 zout_ref=0004 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2A39 xout=3295 xout_ref=3295 yout=2736 yout_ref=2736 zout=0007 zout_ref=0007 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2C3B xout=314F xout_ref=314F yout=28CD yout_ref=28CD zout=FFF9 zout_ref=FFF9 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=2E3E xout=3002 xout_ref=3002 yout=2A56 yout_ref=2A56 zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3041 xout=2EA6 xout_ref=2EA6 yout=2BD1 yout_ref=2BD1 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3243 xout=2D42 xout_ref=2D42 yout=2D41 yout_ref=2D41 zout=0001 zout_ref=0001 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3446 xout=2BCF xout_ref=2BCF yout=2EA8 yout_ref=2EA8 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3649 xout=2A56 xout_ref=2A56 yout=3002 yout_ref=3002 zout=0003 zout_ref=0003 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=384C xout=28CD xout_ref=28CD yout=314F yout_ref=314F zout=0008 zout_ref=0008 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3A4E xout=2736 xout_ref=2736 yout=3295 yout_ref=3295 zout=FFFA zout_ref=FFFA +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3C51 xout=259D xout_ref=259D yout=33C7 yout_ref=33C7 zout=FFFD zout_ref=FFFD +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=3E54 xout=23FA xout_ref=23FA yout=34EE yout_ref=34EE zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4056 xout=224C xout_ref=224C yout=360A yout_ref=360A zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4259 xout=2095 xout_ref=2095 yout=3716 yout_ref=3716 zout=0001 zout_ref=0001 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=445C xout=1ED3 xout_ref=1ED3 yout=3818 yout_ref=3818 zout=FFFC zout_ref=FFFC +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=465F xout=1D0E xout_ref=1D0E yout=3907 yout_ref=3907 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4861 xout=1B42 xout_ref=1B42 yout=39E9 yout_ref=39E9 zout=0001 zout_ref=0001 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4A64 xout=196B xout_ref=196B yout=3ABC yout_ref=3ABC zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4C67 xout=178B xout_ref=178B yout=3B82 yout_ref=3B82 zout=FFFD zout_ref=FFFD +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=4E6A xout=15AB xout_ref=15AB yout=3C37 yout_ref=3C37 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=506C xout=13C3 xout_ref=13C3 yout=3CDF yout_ref=3CDF zout=FFFC zout_ref=FFFC +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=526F xout=11DA xout_ref=11DA yout=3D74 yout_ref=3D74 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5472 xout=0FEA xout_ref=0FEA yout=3DFE yout_ref=3DFE zout=FFFE zout_ref=FFFE +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5674 xout=0DF4 xout_ref=0DF4 yout=3E74 yout_ref=3E74 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5877 xout=0BFB xout_ref=0BFB yout=3EE0 yout_ref=3EE0 zout=FFFD zout_ref=FFFD +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5A7A xout=0A01 xout_ref=0A01 yout=3F37 yout_ref=3F37 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5C7D xout=0804 xout_ref=0804 yout=3F7F yout_ref=3F7F zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=5E7F xout=0606 xout_ref=0606 yout=3FB5 yout_ref=3FB5 zout=0001 zout_ref=0001 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=6082 xout=0408 xout_ref=0408 yout=3FE0 yout_ref=3FE0 zout=0002 zout_ref=0002 +CORDIC OK: Number of cycles=73 + direction=0000 mode=0000 xin=26DD yin=0000 zin=6285 xout=0202 xout_ref=0202 yout=3FF6 yout_ref=3FF6 zout=FFFF zout_ref=FFFF +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=0000 zin=0000 xout=0000 xout_ref=0000 yout=0000 yout_ref=0000 zout=6F84 zout_ref=6F84 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=01F4 zin=0000 xout=033D xout_ref=033D yout=FFFE yout_ref=FFFE zout=649A zout_ref=649A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=03E8 zin=0000 xout=066F xout_ref=066F yout=0000 yout_ref=0000 zout=648C zout_ref=648C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=05DC zin=0000 xout=09A7 xout_ref=09A7 yout=0001 yout_ref=0001 zout=648C zout_ref=648C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=07D0 zin=0000 xout=0CDE xout_ref=0CDE yout=0001 yout_ref=0001 zout=648C zout_ref=648C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=09C4 zin=0000 xout=1017 xout_ref=1017 yout=FFFF yout_ref=FFFF zout=648A zout_ref=648A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=0BB8 zin=0000 xout=134E xout_ref=134E yout=FFFF yout_ref=FFFF zout=648A zout_ref=648A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=0DAC zin=0000 xout=1683 xout_ref=1683 yout=0001 yout_ref=0001 zout=648C zout_ref=648C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=0FA0 zin=0000 xout=19BD xout_ref=19BD yout=FFFF yout_ref=FFFF zout=648A zout_ref=648A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=1194 zin=0000 xout=1CF3 xout_ref=1CF3 yout=0000 yout_ref=0000 zout=6486 zout_ref=6486 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=1388 zin=0000 xout=202D xout_ref=202D yout=0000 yout_ref=0000 zout=6484 zout_ref=6484 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=157C zin=0000 xout=2363 xout_ref=2363 yout=0000 yout_ref=0000 zout=6486 zout_ref=6486 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=1770 zin=0000 xout=269A xout_ref=269A yout=FFFF yout_ref=FFFF zout=648A zout_ref=648A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=1964 zin=0000 xout=29D0 xout_ref=29D0 yout=0000 yout_ref=0000 zout=6486 zout_ref=6486 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0000 yin=1B58 zin=0000 xout=2D09 xout_ref=2D09 yout=0000 yout_ref=0000 zout=6486 zout_ref=6486 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=0000 zin=0000 xout=033E xout_ref=033E yout=FFFE yout_ref=FFFE zout=FFFA zout_ref=FFFA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=01F4 zin=0000 xout=048F xout_ref=048F yout=0000 yout_ref=0000 zout=3248 zout_ref=3248 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=03E8 zin=0000 xout=0736 xout_ref=0736 yout=FFFF yout_ref=FFFF zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=05DC zin=0000 xout=0A31 xout_ref=0A31 yout=0001 yout_ref=0001 zout=4FE8 zout_ref=4FE8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=07D0 zin=0000 xout=0D47 xout_ref=0D47 yout=FFFF yout_ref=FFFF zout=54DC zout_ref=54DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=09C4 zin=0000 xout=106A xout_ref=106A yout=0000 yout_ref=0000 zout=57DE zout_ref=57DE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=0BB8 zin=0000 xout=1394 xout_ref=1394 yout=0000 yout_ref=0000 zout=59F4 zout_ref=59F4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=0DAC zin=0000 xout=16BF xout_ref=16BF yout=0000 yout_ref=0000 zout=5B70 zout_ref=5B70 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=0FA0 zin=0000 xout=19F0 xout_ref=19F0 yout=FFFE yout_ref=FFFE zout=5C96 zout_ref=5C96 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=1194 zin=0000 xout=1D21 xout_ref=1D21 yout=0001 yout_ref=0001 zout=5D70 zout_ref=5D70 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=1388 zin=0000 xout=2058 xout_ref=2058 yout=FFFF yout_ref=FFFF zout=5E2A zout_ref=5E2A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=157C zin=0000 xout=238A xout_ref=238A yout=0000 yout_ref=0000 zout=5EB8 zout_ref=5EB8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=1770 zin=0000 xout=26BC xout_ref=26BC yout=0000 yout_ref=0000 zout=5F36 zout_ref=5F36 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=1964 zin=0000 xout=29F7 xout_ref=29F7 yout=FFFF yout_ref=FFFF zout=5F9E zout_ref=5F9E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=01F4 yin=1B58 zin=0000 xout=2D29 xout_ref=2D29 yout=FFFF yout_ref=FFFF zout=5FFA zout_ref=5FFA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=0000 zin=0000 xout=0671 xout_ref=0671 yout=0000 yout_ref=0000 zout=0010 zout_ref=0010 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=01F4 zin=0000 xout=0736 xout_ref=0736 yout=FFFF yout_ref=FFFF zout=1DB2 zout_ref=1DB2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=03E8 zin=0000 xout=091D xout_ref=091D yout=FFFF yout_ref=FFFF zout=3240 zout_ref=3240 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=05DC zin=0000 xout=0B9B xout_ref=0B9B yout=0000 yout_ref=0000 zout=3EE6 zout_ref=3EE6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=07D0 zin=0000 xout=0E65 xout_ref=0E65 yout=FFFF yout_ref=FFFF zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=09C4 zin=0000 xout=1152 xout_ref=1152 yout=0001 yout_ref=0001 zout=4C2C zout_ref=4C2C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=0BB8 zin=0000 xout=1460 xout_ref=1460 yout=FFFE yout_ref=FFFE zout=4FF2 zout_ref=4FF2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=0DAC zin=0000 xout=176F xout_ref=176F yout=FFFF yout_ref=FFFF zout=52B6 zout_ref=52B6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=0FA0 zin=0000 xout=1A89 xout_ref=1A89 yout=0001 yout_ref=0001 zout=54D6 zout_ref=54D6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=1194 zin=0000 xout=1DAA xout_ref=1DAA yout=FFFF yout_ref=FFFF zout=568A zout_ref=568A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=1388 zin=0000 xout=20D0 xout_ref=20D0 yout=0000 yout_ref=0000 zout=57E2 zout_ref=57E2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=157C zin=0000 xout=23F8 xout_ref=23F8 yout=0000 yout_ref=0000 zout=5902 zout_ref=5902 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=1770 zin=0000 xout=2724 xout_ref=2724 yout=FFFF yout_ref=FFFF zout=59F4 zout_ref=59F4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=1964 zin=0000 xout=2A4F xout_ref=2A4F yout=FFFF yout_ref=FFFF zout=5AC2 zout_ref=5AC2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=03E8 yin=1B58 zin=0000 xout=2D7E xout_ref=2D7E yout=0001 yout_ref=0001 zout=5B70 zout_ref=5B70 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=0000 zin=0000 xout=09AD xout_ref=09AD yout=FFFF yout_ref=FFFF zout=FFFA zout_ref=FFFA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=01F4 zin=0000 xout=0A31 xout_ref=0A31 yout=0001 yout_ref=0001 zout=1490 zout_ref=1490 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=03E8 zin=0000 xout=0B9A xout_ref=0B9A yout=0000 yout_ref=0000 zout=25A8 zout_ref=25A8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=05DC zin=0000 xout=0DA7 xout_ref=0DA7 yout=0000 yout_ref=0000 zout=3248 zout_ref=3248 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=07D0 zin=0000 xout=101B xout_ref=101B yout=FFFF yout_ref=FFFF zout=3B58 zout_ref=3B58 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=09C4 zin=0000 xout=12C3 xout_ref=12C3 yout=0000 yout_ref=0000 zout=41F4 zout_ref=41F4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=0BB8 zin=0000 xout=1598 xout_ref=1598 yout=FFFF yout_ref=FFFF zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=0DAC zin=0000 xout=1881 xout_ref=1881 yout=FFFF yout_ref=FFFF zout=4AA0 zout_ref=4AA0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=0FA0 zin=0000 xout=1B7C xout_ref=1B7C yout=0001 yout_ref=0001 zout=4D90 zout_ref=4D90 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=1194 zin=0000 xout=1E8B xout_ref=1E8B yout=FFFD yout_ref=FFFD zout=4FF2 zout_ref=4FF2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=1388 zin=0000 xout=2198 xout_ref=2198 yout=FFFF yout_ref=FFFF zout=51E0 zout_ref=51E0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=157C zin=0000 xout=24AE xout_ref=24AE yout=0000 yout_ref=0000 zout=537C zout_ref=537C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=1770 zin=0000 xout=27CC xout_ref=27CC yout=FFFF yout_ref=FFFF zout=54DC zout_ref=54DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=1964 zin=0000 xout=2AEC xout_ref=2AEC yout=FFFF yout_ref=FFFF zout=5602 zout_ref=5602 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=05DC yin=1B58 zin=0000 xout=2E0E xout_ref=2E0E yout=0000 yout_ref=0000 zout=5702 zout_ref=5702 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=0000 zin=0000 xout=0CE3 xout_ref=0CE3 yout=FFFF yout_ref=FFFF zout=FFFA zout_ref=FFFA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=01F4 zin=0000 xout=0D46 xout_ref=0D46 yout=FFFF yout_ref=FFFF zout=0FB0 zout_ref=0FB0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=03E8 zin=0000 xout=0E64 xout_ref=0E64 yout=0001 yout_ref=0001 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=05DC zin=0000 xout=1017 xout_ref=1017 yout=FFFF yout_ref=FFFF zout=2932 zout_ref=2932 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=07D0 zin=0000 xout=1234 xout_ref=1234 yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=09C4 zin=0000 xout=149F xout_ref=149F yout=0000 yout_ref=0000 zout=3956 zout_ref=3956 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=0BB8 zin=0000 xout=1733 xout_ref=1733 yout=0000 yout_ref=0000 zout=3EE6 zout_ref=3EE6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=0DAC zin=0000 xout=19F3 xout_ref=19F3 yout=FFFE yout_ref=FFFE zout=434E zout_ref=434E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=0FA0 zin=0000 xout=1CC8 xout_ref=1CC8 yout=FFFE yout_ref=FFFE zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=1194 zin=0000 xout=1FB1 xout_ref=1FB1 yout=FFFF yout_ref=FFFF zout=49C2 zout_ref=49C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=1388 zin=0000 xout=22A4 xout_ref=22A4 yout=FFFF yout_ref=FFFF zout=4C2C zout_ref=4C2C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=157C zin=0000 xout=25AB xout_ref=25AB yout=FFFC yout_ref=FFFC zout=4E3C zout_ref=4E3C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=1770 zin=0000 xout=28B6 xout_ref=28B6 yout=FFFF yout_ref=FFFF zout=4FF2 zout_ref=4FF2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=1964 zin=0000 xout=2BC4 xout_ref=2BC4 yout=FFFE yout_ref=FFFE zout=516E zout_ref=516E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=07D0 yin=1B58 zin=0000 xout=2ED9 xout_ref=2ED9 yout=FFFF yout_ref=FFFF zout=52B8 zout_ref=52B8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=0000 zin=0000 xout=101B xout_ref=101B yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=01F4 zin=0000 xout=1066 xout_ref=1066 yout=0000 yout_ref=0000 zout=0CAA zout_ref=0CAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=03E8 zin=0000 xout=115A xout_ref=115A yout=FFFF yout_ref=FFFF zout=185A zout_ref=185A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=05DC zin=0000 xout=12C5 xout_ref=12C5 yout=0000 yout_ref=0000 zout=2294 zout_ref=2294 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=07D0 zin=0000 xout=1498 xout_ref=1498 yout=0000 yout_ref=0000 zout=2B32 zout_ref=2B32 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=09C4 zin=0000 xout=16C1 xout_ref=16C1 yout=FFFF yout_ref=FFFF zout=3246 zout_ref=3246 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=0BB8 zin=0000 xout=1922 xout_ref=1922 yout=FFFF yout_ref=FFFF zout=3810 zout_ref=3810 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=0DAC zin=0000 xout=1BAF xout_ref=1BAF yout=0000 yout_ref=0000 zout=3CD4 zout_ref=3CD4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=0FA0 zin=0000 xout=1E5E xout_ref=1E5E yout=0000 yout_ref=0000 zout=40C4 zout_ref=40C4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=1194 zin=0000 xout=211D xout_ref=211D yout=FFFF yout_ref=FFFF zout=4412 zout_ref=4412 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=1388 zin=0000 xout=23FA xout_ref=23FA yout=0000 yout_ref=0000 zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=157C zin=0000 xout=26E2 xout_ref=26E2 yout=FFFE yout_ref=FFFE zout=493E zout_ref=493E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=1770 zin=0000 xout=29D2 xout_ref=29D2 yout=FFFF yout_ref=FFFF zout=4B44 zout_ref=4B44 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=1964 zin=0000 xout=2CCE xout_ref=2CCE yout=FFFF yout_ref=FFFF zout=4D0A zout_ref=4D0A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=09C4 yin=1B58 zin=0000 xout=2FD1 xout_ref=2FD1 yout=0002 yout_ref=0002 zout=4E90 zout_ref=4E90 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=0000 zin=0000 xout=1351 xout_ref=1351 yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=01F4 zin=0000 xout=1393 xout_ref=1393 yout=0000 yout_ref=0000 zout=0A94 zout_ref=0A94 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=03E8 zin=0000 xout=1460 xout_ref=1460 yout=FFFE yout_ref=FFFE zout=149A zout_ref=149A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=05DC zin=0000 xout=1596 xout_ref=1596 yout=0001 yout_ref=0001 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=07D0 zin=0000 xout=1735 xout_ref=1735 yout=0000 yout_ref=0000 zout=25A2 zout_ref=25A2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=09C4 zin=0000 xout=1920 xout_ref=1920 yout=0001 yout_ref=0001 zout=2C76 zout_ref=2C76 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=0BB8 zin=0000 xout=1B4D xout_ref=1B4D yout=FFFF yout_ref=FFFF zout=3246 zout_ref=3246 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=0DAC zin=0000 xout=1DAB xout_ref=1DAB yout=FFFE yout_ref=FFFE zout=3730 zout_ref=3730 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=0FA0 zin=0000 xout=202E xout_ref=202E yout=0000 yout_ref=0000 zout=3B5A zout_ref=3B5A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=1194 zin=0000 xout=22CE xout_ref=22CE yout=0000 yout_ref=0000 zout=3EE4 zout_ref=3EE4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=1388 zin=0000 xout=2584 xout_ref=2584 yout=FFFF yout_ref=FFFF zout=41F2 zout_ref=41F2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=157C zin=0000 xout=2850 xout_ref=2850 yout=FFFF yout_ref=FFFF zout=4494 zout_ref=4494 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=1770 zin=0000 xout=2B2A xout_ref=2B2A yout=0000 yout_ref=0000 zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=1964 zin=0000 xout=2E12 xout_ref=2E12 yout=0000 yout_ref=0000 zout=48DC zout_ref=48DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0BB8 yin=1B58 zin=0000 xout=3100 xout_ref=3100 yout=0001 yout_ref=0001 zout=4A9C zout_ref=4A9C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=0000 zin=0000 xout=1689 xout_ref=1689 yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=01F4 zin=0000 xout=16C1 xout_ref=16C1 yout=0000 yout_ref=0000 zout=0918 zout_ref=0918 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=03E8 zin=0000 xout=176B xout_ref=176B yout=FFFF yout_ref=FFFF zout=11D4 zout_ref=11D4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=05DC zin=0000 xout=1881 xout_ref=1881 yout=FFFF yout_ref=FFFF zout=19EA zout_ref=19EA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=07D0 zin=0000 xout=19F0 xout_ref=19F0 yout=FFFE yout_ref=FFFE zout=213E zout_ref=213E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=09C4 zin=0000 xout=1BAB xout_ref=1BAB yout=0000 yout_ref=0000 zout=27B4 zout_ref=27B4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=0BB8 zin=0000 xout=1DA9 xout_ref=1DA9 yout=0002 yout_ref=0002 zout=2D56 zout_ref=2D56 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=0DAC zin=0000 xout=1FD8 xout_ref=1FD8 yout=0000 yout_ref=0000 zout=3248 zout_ref=3248 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=0FA0 zin=0000 xout=2235 xout_ref=2235 yout=FFFF yout_ref=FFFF zout=3688 zout_ref=3688 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=1194 zin=0000 xout=24AE xout_ref=24AE yout=0000 yout_ref=0000 zout=3A36 zout_ref=3A36 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=1388 zin=0000 xout=2747 xout_ref=2747 yout=0000 yout_ref=0000 zout=3D72 zout_ref=3D72 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=157C zin=0000 xout=29F7 xout_ref=29F7 yout=FFFF yout_ref=FFFF zout=4044 zout_ref=4044 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=1770 zin=0000 xout=2CB5 xout_ref=2CB5 yout=FFFE yout_ref=FFFE zout=42C0 zout_ref=42C0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=1964 zin=0000 xout=2F81 xout_ref=2F81 yout=FFFE yout_ref=FFFE zout=44EC zout_ref=44EC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0DAC yin=1B58 zin=0000 xout=325C xout_ref=325C yout=FFFF yout_ref=FFFF zout=46DC zout_ref=46DC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=0000 zin=0000 xout=19C0 xout_ref=19C0 yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=01F4 zin=0000 xout=19F3 xout_ref=19F3 yout=FFFE yout_ref=FFFE zout=07F6 zout_ref=07F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=03E8 zin=0000 xout=1A88 xout_ref=1A88 yout=FFFE yout_ref=FFFE zout=0FB0 zout_ref=0FB0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=05DC zin=0000 xout=1B80 xout_ref=1B80 yout=FFFF yout_ref=FFFF zout=16F6 zout_ref=16F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=07D0 zin=0000 xout=1CC7 xout_ref=1CC7 yout=0001 yout_ref=0001 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=09C4 zin=0000 xout=1E58 xout_ref=1E58 yout=FFFF yout_ref=FFFF zout=23C2 zout_ref=23C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=0BB8 zin=0000 xout=202D xout_ref=202D yout=0000 yout_ref=0000 zout=292C zout_ref=292C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=0DAC zin=0000 xout=2233 xout_ref=2233 yout=FFFF yout_ref=FFFF zout=2E02 zout_ref=2E02 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=0FA0 zin=0000 xout=2466 xout_ref=2466 yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=1194 zin=0000 xout=26BD xout_ref=26BD yout=0000 yout_ref=0000 zout=3606 zout_ref=3606 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=1388 zin=0000 xout=2936 xout_ref=2936 yout=FFFF yout_ref=FFFF zout=395A zout_ref=395A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=157C zin=0000 xout=2BBF xout_ref=2BBF yout=0004 yout_ref=0004 zout=3C42 zout_ref=3C42 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=1770 zin=0000 xout=2E65 xout_ref=2E65 yout=FFFF yout_ref=FFFF zout=3EE6 zout_ref=3EE6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=1964 zin=0000 xout=311B xout_ref=311B yout=0002 yout_ref=0002 zout=4134 zout_ref=4134 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=0FA0 yin=1B58 zin=0000 xout=33E1 xout_ref=33E1 yout=0000 yout_ref=0000 zout=434E zout_ref=434E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=0000 zin=0000 xout=1CF6 xout_ref=1CF6 yout=0000 yout_ref=0000 zout=0002 zout_ref=0002 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=01F4 zin=0000 xout=1D24 xout_ref=1D24 yout=FFFF yout_ref=FFFF zout=0716 zout_ref=0716 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=03E8 zin=0000 xout=1DAA xout_ref=1DAA yout=0001 yout_ref=0001 zout=0DFC zout_ref=0DFC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=05DC zin=0000 xout=1E8B xout_ref=1E8B yout=FFFD yout_ref=FFFD zout=149A zout_ref=149A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=07D0 zin=0000 xout=1FAF xout_ref=1FAF yout=FFFF yout_ref=FFFF zout=1AC8 zout_ref=1AC8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=09C4 zin=0000 xout=2121 xout_ref=2121 yout=FFFF yout_ref=FFFF zout=2076 zout_ref=2076 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=0BB8 zin=0000 xout=22CE xout_ref=22CE yout=0000 yout_ref=0000 zout=25A2 zout_ref=25A2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=0DAC zin=0000 xout=24B1 xout_ref=24B1 yout=FFFF yout_ref=FFFF zout=2A50 zout_ref=2A50 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=0FA0 zin=0000 xout=26BE xout_ref=26BE yout=FFFF yout_ref=FFFF zout=2E84 zout_ref=2E84 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=1194 zin=0000 xout=28F3 xout_ref=28F3 yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=1388 zin=0000 xout=2B4A xout_ref=2B4A yout=0000 yout_ref=0000 zout=35A2 zout_ref=35A2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=157C zin=0000 xout=2DB9 xout_ref=2DB9 yout=0000 yout_ref=0000 zout=38A4 zout_ref=38A4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=1770 zin=0000 xout=3043 xout_ref=3043 yout=FFFF yout_ref=FFFF zout=3B5A zout_ref=3B5A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=1964 zin=0000 xout=32DB xout_ref=32DB yout=0000 yout_ref=0000 zout=3DC4 zout_ref=3DC4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1194 yin=1B58 zin=0000 xout=358A xout_ref=358A yout=0000 yout_ref=0000 zout=3FF2 zout_ref=3FF2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=0000 zin=0000 xout=202E xout_ref=202E yout=0000 yout_ref=0000 zout=0002 zout_ref=0002 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=01F4 zin=0000 xout=205A xout_ref=205A yout=FFFF yout_ref=FFFF zout=0668 zout_ref=0668 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=03E8 zin=0000 xout=20CE xout_ref=20CE yout=0000 yout_ref=0000 zout=0CA4 zout_ref=0CA4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=05DC zin=0000 xout=2195 xout_ref=2195 yout=FFFF yout_ref=FFFF zout=12A8 zout_ref=12A8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=07D0 zin=0000 xout=22AD xout_ref=22AD yout=0000 yout_ref=0000 zout=185A zout_ref=185A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=09C4 zin=0000 xout=23F8 xout_ref=23F8 yout=0000 yout_ref=0000 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=0BB8 zin=0000 xout=2585 xout_ref=2585 yout=FFFF yout_ref=FFFF zout=2298 zout_ref=2298 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=0DAC zin=0000 xout=2745 xout_ref=2745 yout=0000 yout_ref=0000 zout=2714 zout_ref=2714 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=0FA0 zin=0000 xout=2931 xout_ref=2931 yout=FFFF yout_ref=FFFF zout=2B30 zout_ref=2B30 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=1194 zin=0000 xout=2B46 xout_ref=2B46 yout=0001 yout_ref=0001 zout=2EE4 zout_ref=2EE4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=1388 zin=0000 xout=2D7F xout_ref=2D7F yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=157C zin=0000 xout=2FD6 xout_ref=2FD6 yout=FFFA yout_ref=FFFA zout=3556 zout_ref=3556 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=1770 zin=0000 xout=3241 xout_ref=3241 yout=0000 yout_ref=0000 zout=3810 zout_ref=3810 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=1964 zin=0000 xout=34C6 xout_ref=34C6 yout=0000 yout_ref=0000 zout=3A92 zout_ref=3A92 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1388 yin=1B58 zin=0000 xout=375A xout_ref=375A yout=FFFE yout_ref=FFFE zout=3CD8 zout_ref=3CD8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=0000 zin=0000 xout=2366 xout_ref=2366 yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=01F4 zin=0000 xout=2389 xout_ref=2389 yout=0000 yout_ref=0000 zout=05CE zout_ref=05CE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=03E8 zin=0000 xout=23FA xout_ref=23FA yout=0000 yout_ref=0000 zout=0B84 zout_ref=0B84 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=05DC zin=0000 xout=24AE xout_ref=24AE yout=FFFF yout_ref=FFFF zout=110C zout_ref=110C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=07D0 zin=0000 xout=25AD xout_ref=25AD yout=FFFC yout_ref=FFFC zout=165A zout_ref=165A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=09C4 zin=0000 xout=26DD xout_ref=26DD yout=0002 yout_ref=0002 zout=1B48 zout_ref=1B48 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=0BB8 zin=0000 xout=284E xout_ref=284E yout=FFFF yout_ref=FFFF zout=1FF6 zout_ref=1FF6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=0DAC zin=0000 xout=29F7 xout_ref=29F7 yout=FFFF yout_ref=FFFF zout=2446 zout_ref=2446 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=0FA0 zin=0000 xout=2BC6 xout_ref=2BC6 yout=FFFC yout_ref=FFFC zout=2844 zout_ref=2844 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=1194 zin=0000 xout=2DB6 xout_ref=2DB6 yout=0000 yout_ref=0000 zout=2BE2 zout_ref=2BE2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=1388 zin=0000 xout=2FD3 xout_ref=2FD3 yout=FFFA yout_ref=FFFA zout=2F3E zout_ref=2F3E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=157C zin=0000 xout=320C xout_ref=320C yout=0000 yout_ref=0000 zout=3240 zout_ref=3240 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=1770 zin=0000 xout=345F xout_ref=345F yout=FFFF yout_ref=FFFF zout=350A zout_ref=350A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=1964 zin=0000 xout=36C9 xout_ref=36C9 yout=0000 yout_ref=0000 zout=3794 zout_ref=3794 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=157C yin=1B58 zin=0000 xout=3947 xout_ref=3947 yout=FFFF yout_ref=FFFF zout=39E8 zout_ref=39E8 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=0000 zin=0000 xout=269D xout_ref=269D yout=FFFF yout_ref=FFFF zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=01F4 zin=0000 xout=26BE xout_ref=26BE yout=0000 yout_ref=0000 zout=0550 zout_ref=0550 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=03E8 zin=0000 xout=2722 xout_ref=2722 yout=FFFF yout_ref=FFFF zout=0A94 zout_ref=0A94 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=05DC zin=0000 xout=27CA xout_ref=27CA yout=0000 yout_ref=0000 zout=0FAA zout_ref=0FAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=07D0 zin=0000 xout=28B6 xout_ref=28B6 yout=FFFF yout_ref=FFFF zout=149A zout_ref=149A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=09C4 zin=0000 xout=29D1 xout_ref=29D1 yout=FFFF yout_ref=FFFF zout=1944 zout_ref=1944 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=0BB8 zin=0000 xout=2B29 xout_ref=2B29 yout=0000 yout_ref=0000 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=0DAC zin=0000 xout=2CAF xout_ref=2CAF yout=0002 yout_ref=0002 zout=21C6 zout_ref=21C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=0FA0 zin=0000 xout=2E67 xout_ref=2E67 yout=FFFF yout_ref=FFFF zout=25A2 zout_ref=25A2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=1194 zin=0000 xout=3040 xout_ref=3040 yout=FFFF yout_ref=FFFF zout=292E zout_ref=292E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=1388 zin=0000 xout=3240 xout_ref=3240 yout=FFFF yout_ref=FFFF zout=2C76 zout_ref=2C76 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=157C zin=0000 xout=345E xout_ref=345E yout=FFFF yout_ref=FFFF zout=2F7E zout_ref=2F7E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=1770 zin=0000 xout=3697 xout_ref=3697 yout=0001 yout_ref=0001 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=1964 zin=0000 xout=38EE xout_ref=38EE yout=FFFF yout_ref=FFFF zout=34D6 zout_ref=34D6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1770 yin=1B58 zin=0000 xout=3B52 xout_ref=3B52 yout=FFFD yout_ref=FFFD zout=3730 zout_ref=3730 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=0000 zin=0000 xout=29D4 xout_ref=29D4 yout=0000 yout_ref=0000 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=01F4 zin=0000 xout=29F7 xout_ref=29F7 yout=FFFF yout_ref=FFFF zout=04EC zout_ref=04EC +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=03E8 zin=0000 xout=2A51 xout_ref=2A51 yout=0000 yout_ref=0000 zout=09C4 zout_ref=09C4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=05DC zin=0000 xout=2AEB xout_ref=2AEB yout=FFFF yout_ref=FFFF zout=0E88 zout_ref=0E88 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=07D0 zin=0000 xout=2BC0 xout_ref=2BC0 yout=0002 yout_ref=0002 zout=1318 zout_ref=1318 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=09C4 zin=0000 xout=2CD0 xout_ref=2CD0 yout=FFFF yout_ref=FFFF zout=177E zout_ref=177E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=0BB8 zin=0000 xout=2E0E xout_ref=2E0E yout=0000 yout_ref=0000 zout=1BAA zout_ref=1BAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=0DAC zin=0000 xout=2F81 xout_ref=2F81 yout=FFFE yout_ref=FFFE zout=1FA0 zout_ref=1FA0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=0FA0 zin=0000 xout=311D xout_ref=311D yout=FFFE yout_ref=FFFE zout=2352 zout_ref=2352 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=1194 zin=0000 xout=32E0 xout_ref=32E0 yout=0000 yout_ref=0000 zout=26C2 zout_ref=26C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=1388 zin=0000 xout=34C0 xout_ref=34C0 yout=0000 yout_ref=0000 zout=29F4 zout_ref=29F4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=157C zin=0000 xout=36C8 xout_ref=36C8 yout=0000 yout_ref=0000 zout=2CF2 zout_ref=2CF2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=1770 zin=0000 xout=38E6 xout_ref=38E6 yout=0001 yout_ref=0001 zout=2FB0 zout_ref=2FB0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=1964 zin=0000 xout=3B24 xout_ref=3B24 yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1964 yin=1B58 zin=0000 xout=3D79 xout_ref=3D79 yout=FFFF yout_ref=FFFF zout=34A4 zout_ref=34A4 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=0000 zin=0000 xout=2D0C xout_ref=2D0C yout=0000 yout_ref=0000 zout=0000 zout_ref=0000 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=01F4 zin=0000 xout=2D25 xout_ref=2D25 yout=0001 yout_ref=0001 zout=048C zout_ref=048C +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=03E8 zin=0000 xout=2D81 xout_ref=2D81 yout=FFFF yout_ref=FFFF zout=0916 zout_ref=0916 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=05DC zin=0000 xout=2E12 xout_ref=2E12 yout=0000 yout_ref=0000 zout=0D84 zout_ref=0D84 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=07D0 zin=0000 xout=2ED5 xout_ref=2ED5 yout=FFFF yout_ref=FFFF zout=11D0 zout_ref=11D0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=09C4 zin=0000 xout=2FD5 xout_ref=2FD5 yout=FFFF yout_ref=FFFF zout=15F6 zout_ref=15F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=0BB8 zin=0000 xout=3100 xout_ref=3100 yout=FFFF yout_ref=FFFF zout=19EA zout_ref=19EA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=0DAC zin=0000 xout=3259 xout_ref=3259 yout=0000 yout_ref=0000 zout=1DAA zout_ref=1DAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=0FA0 zin=0000 xout=33DE xout_ref=33DE yout=0000 yout_ref=0000 zout=2138 zout_ref=2138 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=1194 zin=0000 xout=358B xout_ref=358B yout=0000 yout_ref=0000 zout=2494 zout_ref=2494 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=1388 zin=0000 xout=3757 xout_ref=3757 yout=FFFE yout_ref=FFFE zout=27B2 zout_ref=27B2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=157C zin=0000 xout=3946 xout_ref=3946 yout=FFFF yout_ref=FFFF zout=2AA0 zout_ref=2AA0 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=1770 zin=0000 xout=3B53 xout_ref=3B53 yout=FFFD yout_ref=FFFD zout=2D5E zout_ref=2D5E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=1964 zin=0000 xout=3D73 xout_ref=3D73 yout=0002 yout_ref=0002 zout=2FE2 zout_ref=2FE2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0000 xin=1B58 yin=1B58 zin=0000 xout=3FB0 xout_ref=3FB0 yout=0000 yout_ref=0000 zout=3242 zout_ref=3242 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=1064 yin=F064 zin=0000 xout=054B xout_ref=054B yout=FCA2 yout_ref=FCA2 zout=B875 zout_ref=B875 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=10C8 yin=F0C8 zin=0000 xout=0647 xout_ref=0647 yout=FD9F yout_ref=FD9F zout=B875 zout_ref=B875 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=112C yin=F12C zin=0000 xout=0745 xout_ref=0745 yout=FE9C yout_ref=FE9C zout=B875 zout_ref=B875 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1190 yin=F190 zin=0000 xout=0840 xout_ref=0840 yout=FF9B yout_ref=FF9B zout=B875 zout_ref=B875 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=11F4 yin=F1F4 zin=0000 xout=093C xout_ref=093C yout=0000 yout_ref=0000 zout=BCA5 zout_ref=BCA5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1258 yin=F258 zin=0000 xout=0A1D xout_ref=0A1D yout=FFFF yout_ref=FFFF zout=C287 zout_ref=C287 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=12BC yin=F2BC zin=0000 xout=0AEE xout_ref=0AEE yout=FFFE yout_ref=FFFE zout=C777 zout_ref=C777 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1320 yin=F320 zin=0000 xout=0BB1 xout_ref=0BB1 yout=FFFF yout_ref=FFFF zout=CBB9 zout_ref=CBB9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1384 yin=F384 zin=0000 xout=0C66 xout_ref=0C66 yout=FFFE yout_ref=FFFE zout=CF89 zout_ref=CF89 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=13E8 yin=F3E8 zin=0000 xout=0D16 xout_ref=0D16 yout=0000 yout_ref=0000 zout=D2EB zout_ref=D2EB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=144C yin=F44C zin=0000 xout=0DB8 xout_ref=0DB8 yout=FFFF yout_ref=FFFF zout=D5EB zout_ref=D5EB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=14B0 yin=F4B0 zin=0000 xout=0E52 xout_ref=0E52 yout=FFFF yout_ref=FFFF zout=D8AD zout_ref=D8AD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1514 yin=F514 zin=0000 xout=0EE9 xout_ref=0EE9 yout=FFFD yout_ref=FFFD zout=DB4D zout_ref=DB4D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1578 yin=F578 zin=0000 xout=0F7B xout_ref=0F7B yout=0001 yout_ref=0001 zout=DDA5 zout_ref=DDA5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=15DC yin=F5DC zin=0000 xout=1006 xout_ref=1006 yout=FFFF yout_ref=FFFF zout=DFDD zout_ref=DFDD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1640 yin=F640 zin=0000 xout=108B xout_ref=108B yout=0000 yout_ref=0000 zout=E1EF zout_ref=E1EF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=16A4 yin=F6A4 zin=0000 xout=1111 xout_ref=1111 yout=0000 yout_ref=0000 zout=E3DF zout_ref=E3DF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1708 yin=F708 zin=0000 xout=118B xout_ref=118B yout=FFFF yout_ref=FFFF zout=E5AF zout_ref=E5AF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=176C yin=F76C zin=0000 xout=1209 xout_ref=1209 yout=0000 yout_ref=0000 zout=E76F zout_ref=E76F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=17D0 yin=F7D0 zin=0000 xout=1282 xout_ref=1282 yout=FFFF yout_ref=FFFF zout=E917 zout_ref=E917 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1834 yin=F834 zin=0000 xout=12F9 xout_ref=12F9 yout=0000 yout_ref=0000 zout=EAA9 zout_ref=EAA9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1898 yin=F898 zin=0000 xout=136B xout_ref=136B yout=0000 yout_ref=0000 zout=EC29 zout_ref=EC29 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=18FC yin=F8FC zin=0000 xout=13D8 xout_ref=13D8 yout=0000 yout_ref=0000 zout=ED89 zout_ref=ED89 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1960 yin=F960 zin=0000 xout=1447 xout_ref=1447 yout=0000 yout_ref=0000 zout=EEE9 zout_ref=EEE9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=19C4 yin=F9C4 zin=0000 xout=14AE xout_ref=14AE yout=FFFD yout_ref=FFFD zout=F039 zout_ref=F039 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1A28 yin=FA28 zin=0000 xout=151B xout_ref=151B yout=0000 yout_ref=0000 zout=F17B zout_ref=F17B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1A8C yin=FA8C zin=0000 xout=1584 xout_ref=1584 yout=0000 yout_ref=0000 zout=F2B3 zout_ref=F2B3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1AF0 yin=FAF0 zin=0000 xout=15E8 xout_ref=15E8 yout=0000 yout_ref=0000 zout=F3DB zout_ref=F3DB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1B54 yin=FB54 zin=0000 xout=164E xout_ref=164E yout=0002 yout_ref=0002 zout=F4FB zout_ref=F4FB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1BB8 yin=FBB8 zin=0000 xout=16AA xout_ref=16AA yout=FFFF yout_ref=FFFF zout=F60B zout_ref=F60B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1C1C yin=FC1C zin=0000 xout=170B xout_ref=170B yout=FFFE yout_ref=FFFE zout=F71B zout_ref=F71B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1C80 yin=FC80 zin=0000 xout=1769 xout_ref=1769 yout=FFFF yout_ref=FFFF zout=F81B zout_ref=F81B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1CE4 yin=FCE4 zin=0000 xout=17C8 xout_ref=17C8 yout=FFFF yout_ref=FFFF zout=F91B zout_ref=F91B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1D48 yin=FD48 zin=0000 xout=1823 xout_ref=1823 yout=0000 yout_ref=0000 zout=FA0D zout_ref=FA0D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1DAC yin=FDAC zin=0000 xout=1880 xout_ref=1880 yout=0001 yout_ref=0001 zout=FAFD zout_ref=FAFD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1E10 yin=FE10 zin=0000 xout=18D4 xout_ref=18D4 yout=FFFF yout_ref=FFFF zout=FBDD zout_ref=FBDD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1E74 yin=FE74 zin=0000 xout=192E xout_ref=192E yout=0000 yout_ref=0000 zout=FCC5 zout_ref=FCC5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1ED8 yin=FED8 zin=0000 xout=1982 xout_ref=1982 yout=FFFE yout_ref=FFFE zout=FD9D zout_ref=FD9D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1F3C yin=FF3C zin=0000 xout=19D9 xout_ref=19D9 yout=FFFE yout_ref=FFFE zout=FE6D zout_ref=FE6D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=1FA0 yin=FFA0 zin=0000 xout=1A2B xout_ref=1A2B yout=FFFE yout_ref=FFFE zout=FF3D zout_ref=FF3D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2004 yin=0004 zin=0000 xout=1A7B xout_ref=1A7B yout=FFFD yout_ref=FFFD zout=0003 zout_ref=0003 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2068 yin=0068 zin=0000 xout=1ACD xout_ref=1ACD yout=FFFE yout_ref=FFFE zout=00C3 zout_ref=00C3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=20CC yin=00CC zin=0000 xout=1B1E xout_ref=1B1E yout=FFFF yout_ref=FFFF zout=0183 zout_ref=0183 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2130 yin=0130 zin=0000 xout=1B71 xout_ref=1B71 yout=FFFF yout_ref=FFFF zout=0243 zout_ref=0243 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2194 yin=0194 zin=0000 xout=1BC2 xout_ref=1BC2 yout=0000 yout_ref=0000 zout=0303 zout_ref=0303 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=21F8 yin=01F8 zin=0000 xout=1C13 xout_ref=1C13 yout=0000 yout_ref=0000 zout=03BB zout_ref=03BB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=225C yin=025C zin=0000 xout=1C5E xout_ref=1C5E yout=FFFE yout_ref=FFFE zout=0463 zout_ref=0463 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=22C0 yin=02C0 zin=0000 xout=1CAA xout_ref=1CAA yout=FFFE yout_ref=FFFE zout=0513 zout_ref=0513 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2324 yin=0324 zin=0000 xout=1CFB xout_ref=1CFB yout=0000 yout_ref=0000 zout=05C3 zout_ref=05C3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2388 yin=0388 zin=0000 xout=1D46 xout_ref=1D46 yout=0002 yout_ref=0002 zout=0663 zout_ref=0663 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=23EC yin=03EC zin=0000 xout=1D8F xout_ref=1D8F yout=0001 yout_ref=0001 zout=0705 zout_ref=0705 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2450 yin=0450 zin=0000 xout=1DD9 xout_ref=1DD9 yout=0002 yout_ref=0002 zout=07A5 zout_ref=07A5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=24B4 yin=04B4 zin=0000 xout=1E23 xout_ref=1E23 yout=0000 yout_ref=0000 zout=0845 zout_ref=0845 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2518 yin=0518 zin=0000 xout=1E69 xout_ref=1E69 yout=0001 yout_ref=0001 zout=08D5 zout_ref=08D5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=257C yin=057C zin=0000 xout=1EAF xout_ref=1EAF yout=FFFF yout_ref=FFFF zout=096D zout_ref=096D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=25E0 yin=05E0 zin=0000 xout=1EF7 xout_ref=1EF7 yout=FFFC yout_ref=FFFC zout=0A05 zout_ref=0A05 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2644 yin=0644 zin=0000 xout=1F42 xout_ref=1F42 yout=0001 yout_ref=0001 zout=0A95 zout_ref=0A95 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=26A8 yin=06A8 zin=0000 xout=1F87 xout_ref=1F87 yout=0002 yout_ref=0002 zout=0B25 zout_ref=0B25 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=270C yin=070C zin=0000 xout=1FC9 xout_ref=1FC9 yout=FFFF yout_ref=FFFF zout=0BAD zout_ref=0BAD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2770 yin=0770 zin=0000 xout=2010 xout_ref=2010 yout=FFFF yout_ref=FFFF zout=0C39 zout_ref=0C39 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=27D4 yin=07D4 zin=0000 xout=2056 xout_ref=2056 yout=0000 yout_ref=0000 zout=0CC1 zout_ref=0CC1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2838 yin=0838 zin=0000 xout=2094 xout_ref=2094 yout=0000 yout_ref=0000 zout=0D45 zout_ref=0D45 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=289C yin=089C zin=0000 xout=20D8 xout_ref=20D8 yout=FFFF yout_ref=FFFF zout=0DC9 zout_ref=0DC9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2900 yin=0900 zin=0000 xout=211C xout_ref=211C yout=0000 yout_ref=0000 zout=0E49 zout_ref=0E49 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2964 yin=0964 zin=0000 xout=2159 xout_ref=2159 yout=FFFC yout_ref=FFFC zout=0EC7 zout_ref=0EC7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=29C8 yin=09C8 zin=0000 xout=21A0 xout_ref=21A0 yout=0000 yout_ref=0000 zout=0F43 zout_ref=0F43 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2A2C yin=0A2C zin=0000 xout=21E2 xout_ref=21E2 yout=FFFF yout_ref=FFFF zout=0FC3 zout_ref=0FC3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2A90 yin=0A90 zin=0000 xout=2223 xout_ref=2223 yout=0000 yout_ref=0000 zout=103B zout_ref=103B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2AF4 yin=0AF4 zin=0000 xout=2264 xout_ref=2264 yout=FFFF yout_ref=FFFF zout=10B3 zout_ref=10B3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0002 xin=2B58 yin=0B58 zin=0000 xout=22A3 xout_ref=22A3 yout=FFFF yout_ref=FFFF zout=1127 zout_ref=1127 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=7D00 yin=4000 zin=0000 xout=7D00 xout_ref=7D00 yout=FFFD yout_ref=FFFD zout=20C6 zout_ref=20C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7C06 yin=4000 zin=0000 xout=7C06 xout_ref=7C06 yout=0000 yout_ref=0000 zout=2106 zout_ref=2106 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7B0C yin=4000 zin=0000 xout=7B0C xout_ref=7B0C yout=FFFD yout_ref=FFFD zout=214A zout_ref=214A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7A12 yin=4000 zin=0000 xout=7A12 xout_ref=7A12 yout=0000 yout_ref=0000 zout=218E zout_ref=218E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7918 yin=4000 zin=0000 xout=7918 xout_ref=7918 yout=0000 yout_ref=0000 zout=21D2 zout_ref=21D2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=781E yin=4000 zin=0000 xout=781E xout_ref=781E yout=FFFD yout_ref=FFFD zout=221A zout_ref=221A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7724 yin=4000 zin=0000 xout=7724 xout_ref=7724 yout=FFFD yout_ref=FFFD zout=2262 zout_ref=2262 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=762A yin=4000 zin=0000 xout=762A xout_ref=762A yout=FFFF yout_ref=FFFF zout=22AA zout_ref=22AA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7530 yin=4000 zin=0000 xout=7530 xout_ref=7530 yout=FFFE yout_ref=FFFE zout=22F6 zout_ref=22F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7436 yin=4000 zin=0000 xout=7436 xout_ref=7436 yout=0003 yout_ref=0003 zout=233E zout_ref=233E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=733C yin=4000 zin=0000 xout=733C xout_ref=733C yout=0000 yout_ref=0000 zout=238A zout_ref=238A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7242 yin=4000 zin=0000 xout=7242 xout_ref=7242 yout=FFFF yout_ref=FFFF zout=23DA zout_ref=23DA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=7148 yin=4000 zin=0000 xout=7148 xout_ref=7148 yout=0003 yout_ref=0003 zout=2426 zout_ref=2426 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=704E yin=4000 zin=0000 xout=704E xout_ref=704E yout=FFFC yout_ref=FFFC zout=247A zout_ref=247A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6F54 yin=4000 zin=0000 xout=6F54 xout_ref=6F54 yout=0000 yout_ref=0000 zout=24CA zout_ref=24CA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6E5A yin=4000 zin=0000 xout=6E5A xout_ref=6E5A yout=0002 yout_ref=0002 zout=251E zout_ref=251E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6D60 yin=4000 zin=0000 xout=6D60 xout_ref=6D60 yout=0002 yout_ref=0002 zout=2572 zout_ref=2572 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6C66 yin=4000 zin=0000 xout=6C66 xout_ref=6C66 yout=FFFF yout_ref=FFFF zout=25CA zout_ref=25CA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6B6C yin=4000 zin=0000 xout=6B6C xout_ref=6B6C yout=FFFC yout_ref=FFFC zout=2622 zout_ref=2622 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6A72 yin=4000 zin=0000 xout=6A72 xout_ref=6A72 yout=FFFD yout_ref=FFFD zout=267E zout_ref=267E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6978 yin=4000 zin=0000 xout=6978 xout_ref=6978 yout=0001 yout_ref=0001 zout=26D6 zout_ref=26D6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=687E yin=4000 zin=0000 xout=687E xout_ref=687E yout=0002 yout_ref=0002 zout=2732 zout_ref=2732 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6784 yin=4000 zin=0000 xout=6784 xout_ref=6784 yout=FFFE yout_ref=FFFE zout=2792 zout_ref=2792 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=668A yin=4000 zin=0000 xout=668A xout_ref=668A yout=0002 yout_ref=0002 zout=27F2 zout_ref=27F2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6590 yin=4000 zin=0000 xout=6590 xout_ref=6590 yout=FFFD yout_ref=FFFD zout=2856 zout_ref=2856 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=6496 yin=4000 zin=0000 xout=6496 xout_ref=6496 yout=FFFE yout_ref=FFFE zout=28BA zout_ref=28BA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=639C yin=4000 zin=0000 xout=639C xout_ref=639C yout=FFFF yout_ref=FFFF zout=291E zout_ref=291E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=62A2 yin=4000 zin=0000 xout=62A2 xout_ref=62A2 yout=0001 yout_ref=0001 zout=2986 zout_ref=2986 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=61A8 yin=4000 zin=0000 xout=61A8 xout_ref=61A8 yout=0001 yout_ref=0001 zout=29F2 zout_ref=29F2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=60AE yin=4000 zin=0000 xout=60AE xout_ref=60AE yout=0000 yout_ref=0000 zout=2A5E zout_ref=2A5E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5FB4 yin=4000 zin=0000 xout=5FB4 xout_ref=5FB4 yout=FFFF yout_ref=FFFF zout=2ACE zout_ref=2ACE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5EBA yin=4000 zin=0000 xout=5EBA xout_ref=5EBA yout=0003 yout_ref=0003 zout=2B3E zout_ref=2B3E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5DC0 yin=4000 zin=0000 xout=5DC0 xout_ref=5DC0 yout=FFFE yout_ref=FFFE zout=2BB2 zout_ref=2BB2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5CC6 yin=4000 zin=0000 xout=5CC6 xout_ref=5CC6 yout=FFFF yout_ref=FFFF zout=2C26 zout_ref=2C26 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5BCC yin=4000 zin=0000 xout=5BCC xout_ref=5BCC yout=0002 yout_ref=0002 zout=2C9E zout_ref=2C9E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5AD2 yin=4000 zin=0000 xout=5AD2 xout_ref=5AD2 yout=FFFF yout_ref=FFFF zout=2D1A zout_ref=2D1A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=59D8 yin=4000 zin=0000 xout=59D8 xout_ref=59D8 yout=FFFD yout_ref=FFFD zout=2D9A zout_ref=2D9A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=58DE yin=4000 zin=0000 xout=58DE xout_ref=58DE yout=0002 yout_ref=0002 zout=2E16 zout_ref=2E16 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=57E4 yin=4000 zin=0000 xout=57E4 xout_ref=57E4 yout=0000 yout_ref=0000 zout=2E9A zout_ref=2E9A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=56EA yin=4000 zin=0000 xout=56EA xout_ref=56EA yout=FFFE yout_ref=FFFE zout=2F22 zout_ref=2F22 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=55F0 yin=4000 zin=0000 xout=55F0 xout_ref=55F0 yout=0001 yout_ref=0001 zout=2FAA zout_ref=2FAA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=54F6 yin=4000 zin=0000 xout=54F6 xout_ref=54F6 yout=FFFE yout_ref=FFFE zout=3036 zout_ref=3036 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=53FC yin=4000 zin=0000 xout=53FC xout_ref=53FC yout=0001 yout_ref=0001 zout=30C2 zout_ref=30C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5302 yin=4000 zin=0000 xout=5302 xout_ref=5302 yout=FFFE yout_ref=FFFE zout=315A zout_ref=315A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5208 yin=4000 zin=0000 xout=5208 xout_ref=5208 yout=0001 yout_ref=0001 zout=31EE zout_ref=31EE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=510E yin=4000 zin=0000 xout=510E xout_ref=510E yout=FFFD yout_ref=FFFD zout=328A zout_ref=328A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=5014 yin=4000 zin=0000 xout=5014 xout_ref=5014 yout=0001 yout_ref=0001 zout=3326 zout_ref=3326 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4F1A yin=4000 zin=0000 xout=4F1A xout_ref=4F1A yout=0001 yout_ref=0001 zout=33C6 zout_ref=33C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4E20 yin=4000 zin=0000 xout=4E20 xout_ref=4E20 yout=0000 yout_ref=0000 zout=346E zout_ref=346E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4D26 yin=4000 zin=0000 xout=4D26 xout_ref=4D26 yout=FFFE yout_ref=FFFE zout=351A zout_ref=351A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4C2C yin=4000 zin=0000 xout=4C2C xout_ref=4C2C yout=FFFF yout_ref=FFFF zout=35C6 zout_ref=35C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4B32 yin=4000 zin=0000 xout=4B32 xout_ref=4B32 yout=FFFE yout_ref=FFFE zout=367E zout_ref=367E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4A38 yin=4000 zin=0000 xout=4A38 xout_ref=4A38 yout=FFFF yout_ref=FFFF zout=3732 zout_ref=3732 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=493E yin=4000 zin=0000 xout=493E xout_ref=493E yout=FFFD yout_ref=FFFD zout=37F2 zout_ref=37F2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4844 yin=4000 zin=0000 xout=4844 xout_ref=4844 yout=0001 yout_ref=0001 zout=38AE zout_ref=38AE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=474A yin=4000 zin=0000 xout=474A xout_ref=474A yout=FFFE yout_ref=FFFE zout=397A zout_ref=397A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4650 yin=4000 zin=0000 xout=4650 xout_ref=4650 yout=FFFC yout_ref=FFFC zout=3A42 zout_ref=3A42 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4556 yin=4000 zin=0000 xout=4556 xout_ref=4556 yout=FFFE yout_ref=FFFE zout=3B16 zout_ref=3B16 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=445C yin=4000 zin=0000 xout=445C xout_ref=445C yout=FFFF yout_ref=FFFF zout=3BEE zout_ref=3BEE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4362 yin=4000 zin=0000 xout=4362 xout_ref=4362 yout=FFFF yout_ref=FFFF zout=3CCA zout_ref=3CCA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4268 yin=4000 zin=0000 xout=4268 xout_ref=4268 yout=FFFE yout_ref=FFFE zout=3DB2 zout_ref=3DB2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=416E yin=4000 zin=0000 xout=416E xout_ref=416E yout=FFFE yout_ref=FFFE zout=3E9E zout_ref=3E9E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=4074 yin=4000 zin=0000 xout=4074 xout_ref=4074 yout=FFFE yout_ref=FFFE zout=3F92 zout_ref=3F92 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3F7A yin=4000 zin=0000 xout=3F7A xout_ref=3F7A yout=FFFD yout_ref=FFFD zout=4082 zout_ref=4082 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3E80 yin=4000 zin=0000 xout=3E80 xout_ref=3E80 yout=FFFE yout_ref=FFFE zout=418A zout_ref=418A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3D86 yin=4000 zin=0000 xout=3D86 xout_ref=3D86 yout=FFFE yout_ref=FFFE zout=4292 zout_ref=4292 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3C8C yin=4000 zin=0000 xout=3C8C xout_ref=3C8C yout=FFFF yout_ref=FFFF zout=43A6 zout_ref=43A6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3B92 yin=4000 zin=0000 xout=3B92 xout_ref=3B92 yout=FFFE yout_ref=FFFE zout=44C2 zout_ref=44C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=3A98 yin=4000 zin=0000 xout=3A98 xout_ref=3A98 yout=FFFF yout_ref=FFFF zout=45EA zout_ref=45EA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=399E yin=4000 zin=0000 xout=399E xout_ref=399E yout=FFFF yout_ref=FFFF zout=4716 zout_ref=4716 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=38A4 yin=4000 zin=0000 xout=38A4 xout_ref=38A4 yout=0002 yout_ref=0002 zout=484E zout_ref=484E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=37AA yin=4000 zin=0000 xout=37AA xout_ref=37AA yout=FFFF yout_ref=FFFF zout=4996 zout_ref=4996 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=36B0 yin=4000 zin=0000 xout=36B0 xout_ref=36B0 yout=0001 yout_ref=0001 zout=4AE6 zout_ref=4AE6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=35B6 yin=4000 zin=0000 xout=35B6 xout_ref=35B6 yout=FFFD yout_ref=FFFD zout=4C42 zout_ref=4C42 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=34BC yin=4000 zin=0000 xout=34BC xout_ref=34BC yout=0000 yout_ref=0000 zout=4DAE zout_ref=4DAE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=33C2 yin=4000 zin=0000 xout=33C2 xout_ref=33C2 yout=FFFF yout_ref=FFFF zout=4F22 zout_ref=4F22 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=32C8 yin=4000 zin=0000 xout=32C8 xout_ref=32C8 yout=FFFE yout_ref=FFFE zout=50AA zout_ref=50AA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=31CE yin=4000 zin=0000 xout=31CE xout_ref=31CE yout=0000 yout_ref=0000 zout=523A zout_ref=523A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=30D4 yin=4000 zin=0000 xout=30D4 xout_ref=30D4 yout=0000 yout_ref=0000 zout=53E6 zout_ref=53E6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2FDA yin=4000 zin=0000 xout=2FDA xout_ref=2FDA yout=0000 yout_ref=0000 zout=559A zout_ref=559A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2EE0 yin=4000 zin=0000 xout=2EE0 xout_ref=2EE0 yout=FFFF yout_ref=FFFF zout=5762 zout_ref=5762 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2DE6 yin=4000 zin=0000 xout=2DE6 xout_ref=2DE6 yout=0001 yout_ref=0001 zout=593E zout_ref=593E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2CEC yin=4000 zin=0000 xout=2CEC xout_ref=2CEC yout=FFFE yout_ref=FFFE zout=5B32 zout_ref=5B32 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2BF2 yin=4000 zin=0000 xout=2BF2 xout_ref=2BF2 yout=FFFF yout_ref=FFFF zout=5D36 zout_ref=5D36 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2AF8 yin=4000 zin=0000 xout=2AF8 xout_ref=2AF8 yout=0000 yout_ref=0000 zout=5F56 zout_ref=5F56 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=29FE yin=4000 zin=0000 xout=29FE xout_ref=29FE yout=0000 yout_ref=0000 zout=6186 zout_ref=6186 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2904 yin=4000 zin=0000 xout=2904 xout_ref=2904 yout=0000 yout_ref=0000 zout=63DE zout_ref=63DE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=280A yin=4000 zin=0000 xout=280A xout_ref=280A yout=0000 yout_ref=0000 zout=664E zout_ref=664E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2710 yin=4000 zin=0000 xout=2710 xout_ref=2710 yout=FFFF yout_ref=FFFF zout=68DE zout_ref=68DE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2616 yin=4000 zin=0000 xout=2616 xout_ref=2616 yout=0000 yout_ref=0000 zout=6B8A zout_ref=6B8A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=251C yin=4000 zin=0000 xout=251C xout_ref=251C yout=0000 yout_ref=0000 zout=6E62 zout_ref=6E62 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2422 yin=4000 zin=0000 xout=2422 xout_ref=2422 yout=0000 yout_ref=0000 zout=715E zout_ref=715E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2328 yin=4000 zin=0000 xout=2328 xout_ref=2328 yout=FFFD yout_ref=FFFD zout=7482 zout_ref=7482 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=222E yin=4000 zin=0000 xout=222E xout_ref=222E yout=0000 yout_ref=0000 zout=77DA zout_ref=77DA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=2134 yin=4000 zin=0000 xout=2134 xout_ref=2134 yout=FFFF yout_ref=FFFF zout=7B62 zout_ref=7B62 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0001 xin=203A yin=4000 zin=0000 xout=203A xout_ref=203A yout=FFFF yout_ref=FFFF zout=7F22 zout_ref=7F22 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=1FA0 yin=FFA0 zin=0000 xout=1A2B xout_ref=1A2B yout=FFFE yout_ref=FFFE zout=FF3D zout_ref=FF3D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=1F98 yin=4000 zin=0000 xout=1F98 xout_ref=1F98 yout=00D8 yout_ref=00D8 zout=7FFE zout_ref=7FFE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2068 yin=0068 zin=0000 xout=1ACD xout_ref=1ACD yout=FFFE yout_ref=FFFE zout=00C3 zout_ref=00C3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=205C yin=4000 zin=0000 xout=205C xout_ref=205C yout=FFFF yout_ref=FFFF zout=7E9A zout_ref=7E9A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2130 yin=0130 zin=0000 xout=1B71 xout_ref=1B71 yout=FFFF yout_ref=FFFF zout=0243 zout_ref=0243 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2122 yin=4000 zin=0000 xout=2122 xout_ref=2122 yout=0000 yout_ref=0000 zout=7BA2 zout_ref=7BA2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=21F8 yin=01F8 zin=0000 xout=1C13 xout_ref=1C13 yout=0000 yout_ref=0000 zout=03BB zout_ref=03BB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=21E6 yin=4000 zin=0000 xout=21E6 xout_ref=21E6 yout=FFFF yout_ref=FFFF zout=78DA zout_ref=78DA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=22C0 yin=02C0 zin=0000 xout=1CAA xout_ref=1CAA yout=FFFE yout_ref=FFFE zout=0513 zout_ref=0513 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=229C yin=4000 zin=0000 xout=229C xout_ref=229C yout=0000 yout_ref=0000 zout=765A zout_ref=765A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2388 yin=0388 zin=0000 xout=1D46 xout_ref=1D46 yout=0002 yout_ref=0002 zout=0663 zout_ref=0663 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2358 yin=4000 zin=0000 xout=2358 xout_ref=2358 yout=0000 yout_ref=0000 zout=73E6 zout_ref=73E6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2450 yin=0450 zin=0000 xout=1DD9 xout_ref=1DD9 yout=0002 yout_ref=0002 zout=07A5 zout_ref=07A5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=240A yin=4000 zin=0000 xout=240A xout_ref=240A yout=0000 yout_ref=0000 zout=71A6 zout_ref=71A6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2518 yin=0518 zin=0000 xout=1E69 xout_ref=1E69 yout=0001 yout_ref=0001 zout=08D5 zout_ref=08D5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=24B8 yin=4000 zin=0000 xout=24B8 xout_ref=24B8 yout=0000 yout_ref=0000 zout=6F92 zout_ref=6F92 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=25E0 yin=05E0 zin=0000 xout=1EF7 xout_ref=1EF7 yout=FFFC yout_ref=FFFC zout=0A05 zout_ref=0A05 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2563 yin=4000 zin=0000 xout=2563 xout_ref=2563 yout=FFFF yout_ref=FFFF zout=6D92 zout_ref=6D92 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=26A8 yin=06A8 zin=0000 xout=1F87 xout_ref=1F87 yout=0002 yout_ref=0002 zout=0B25 zout_ref=0B25 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2611 yin=4000 zin=0000 xout=2611 xout_ref=2611 yout=FFFF yout_ref=FFFF zout=6B9E zout_ref=6B9E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2770 yin=0770 zin=0000 xout=2010 xout_ref=2010 yout=FFFF yout_ref=FFFF zout=0C39 zout_ref=0C39 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=26B6 yin=4000 zin=0000 xout=26B6 xout_ref=26B6 yout=0000 yout_ref=0000 zout=69CE zout_ref=69CE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2838 yin=0838 zin=0000 xout=2094 xout_ref=2094 yout=0000 yout_ref=0000 zout=0D45 zout_ref=0D45 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2756 yin=4000 zin=0000 xout=2756 xout_ref=2756 yout=0000 yout_ref=0000 zout=681E zout_ref=681E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2900 yin=0900 zin=0000 xout=211C xout_ref=211C yout=0000 yout_ref=0000 zout=0E49 zout_ref=0E49 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=27FA yin=4000 zin=0000 xout=27FA xout_ref=27FA yout=0000 yout_ref=0000 zout=667A zout_ref=667A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=29C8 yin=09C8 zin=0000 xout=21A0 xout_ref=21A0 yout=0000 yout_ref=0000 zout=0F43 zout_ref=0F43 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2899 yin=4000 zin=0000 xout=2899 xout_ref=2899 yout=0000 yout_ref=0000 zout=64E6 zout_ref=64E6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2A90 yin=0A90 zin=0000 xout=2223 xout_ref=2223 yout=0000 yout_ref=0000 zout=103B zout_ref=103B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2937 yin=4000 zin=0000 xout=2937 xout_ref=2937 yout=0000 yout_ref=0000 zout=6362 zout_ref=6362 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2B58 yin=0B58 zin=0000 xout=22A3 xout_ref=22A3 yout=FFFF yout_ref=FFFF zout=1127 zout_ref=1127 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=29D2 yin=4000 zin=0000 xout=29D2 xout_ref=29D2 yout=FFFF yout_ref=FFFF zout=61F6 zout_ref=61F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2C20 yin=0C20 zin=0000 xout=2320 xout_ref=2320 yout=FFFF yout_ref=FFFF zout=120F zout_ref=120F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2A69 yin=4000 zin=0000 xout=2A69 xout_ref=2A69 yout=FFFF yout_ref=FFFF zout=6092 zout_ref=6092 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2CE8 yin=0CE8 zin=0000 xout=2398 xout_ref=2398 yout=FFFF yout_ref=FFFF zout=12E7 zout_ref=12E7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2AFA yin=4000 zin=0000 xout=2AFA xout_ref=2AFA yout=FFFF yout_ref=FFFF zout=5F52 zout_ref=5F52 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2DB0 yin=0DB0 zin=0000 xout=2417 xout_ref=2417 yout=FFFF yout_ref=FFFF zout=13C7 zout_ref=13C7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2B93 yin=4000 zin=0000 xout=2B93 xout_ref=2B93 yout=FFFC yout_ref=FFFC zout=5E02 zout_ref=5E02 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2E78 yin=0E78 zin=0000 xout=248F xout_ref=248F yout=FFFF yout_ref=FFFF zout=149F zout_ref=149F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2C24 yin=4000 zin=0000 xout=2C24 xout_ref=2C24 yout=FFFF yout_ref=FFFF zout=5CCE zout_ref=5CCE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=2F40 yin=0F40 zin=0000 xout=2505 xout_ref=2505 yout=0000 yout_ref=0000 zout=156B zout_ref=156B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2CB3 yin=4000 zin=0000 xout=2CB3 xout_ref=2CB3 yout=0000 yout_ref=0000 zout=5BA2 zout_ref=5BA2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3008 yin=1008 zin=0000 xout=257C xout_ref=257C yout=FFFF yout_ref=FFFF zout=1637 zout_ref=1637 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2D42 yin=4000 zin=0000 xout=2D42 xout_ref=2D42 yout=FFFC yout_ref=FFFC zout=5A82 zout_ref=5A82 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=30D0 yin=10D0 zin=0000 xout=25EF xout_ref=25EF yout=FFFF yout_ref=FFFF zout=16F9 zout_ref=16F9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2DCD yin=4000 zin=0000 xout=2DCD xout_ref=2DCD yout=FFFF yout_ref=FFFF zout=5972 zout_ref=5972 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3198 yin=1198 zin=0000 xout=2663 xout_ref=2663 yout=0000 yout_ref=0000 zout=17B9 zout_ref=17B9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2E59 yin=4000 zin=0000 xout=2E59 xout_ref=2E59 yout=0002 yout_ref=0002 zout=585E zout_ref=585E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3260 yin=1260 zin=0000 xout=26D4 xout_ref=26D4 yout=FFFF yout_ref=FFFF zout=1879 zout_ref=1879 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2EE2 yin=4000 zin=0000 xout=2EE2 xout_ref=2EE2 yout=0002 yout_ref=0002 zout=575E zout_ref=575E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3328 yin=1328 zin=0000 xout=2745 xout_ref=2745 yout=FFFF yout_ref=FFFF zout=1931 zout_ref=1931 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2F6A yin=4000 zin=0000 xout=2F6A xout_ref=2F6A yout=FFFF yout_ref=FFFF zout=5662 zout_ref=5662 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=33F0 yin=13F0 zin=0000 xout=27B4 xout_ref=27B4 yout=FFFF yout_ref=FFFF zout=19E5 zout_ref=19E5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=2FF0 yin=4000 zin=0000 xout=2FF0 xout_ref=2FF0 yout=FFFF yout_ref=FFFF zout=5576 zout_ref=5576 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=34B8 yin=14B8 zin=0000 xout=2826 xout_ref=2826 yout=FFFF yout_ref=FFFF zout=1A99 zout_ref=1A99 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=307A yin=4000 zin=0000 xout=307A xout_ref=307A yout=FFFF yout_ref=FFFF zout=547E zout_ref=547E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3580 yin=1580 zin=0000 xout=288E xout_ref=288E yout=FFFF yout_ref=FFFF zout=1B41 zout_ref=1B41 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=30F7 yin=4000 zin=0000 xout=30F7 xout_ref=30F7 yout=FFFF yout_ref=FFFF zout=53AA zout_ref=53AA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3648 yin=1648 zin=0000 xout=28F8 xout_ref=28F8 yout=FFFF yout_ref=FFFF zout=1BE9 zout_ref=1BE9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3177 yin=4000 zin=0000 xout=3177 xout_ref=3177 yout=0001 yout_ref=0001 zout=52CE zout_ref=52CE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3710 yin=1710 zin=0000 xout=2968 xout_ref=2968 yout=0000 yout_ref=0000 zout=1C91 zout_ref=1C91 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=31FF yin=4000 zin=0000 xout=31FF xout_ref=31FF yout=0001 yout_ref=0001 zout=51EE zout_ref=51EE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=37D8 yin=17D8 zin=0000 xout=29D1 xout_ref=29D1 yout=FFFF yout_ref=FFFF zout=1D35 zout_ref=1D35 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=327D yin=4000 zin=0000 xout=327D xout_ref=327D yout=0001 yout_ref=0001 zout=511E zout_ref=511E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=38A0 yin=18A0 zin=0000 xout=2A3B xout_ref=2A3B yout=0000 yout_ref=0000 zout=1DD5 zout_ref=1DD5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=32FD yin=4000 zin=0000 xout=32FD xout_ref=32FD yout=FFFE yout_ref=FFFE zout=5052 zout_ref=5052 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3968 yin=1968 zin=0000 xout=2A9F xout_ref=2A9F yout=0000 yout_ref=0000 zout=1E6D zout_ref=1E6D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3376 yin=4000 zin=0000 xout=3376 xout_ref=3376 yout=FFFF yout_ref=FFFF zout=4F9A zout_ref=4F9A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3A30 yin=1A30 zin=0000 xout=2B05 xout_ref=2B05 yout=0000 yout_ref=0000 zout=1F07 zout_ref=1F07 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=33F1 yin=4000 zin=0000 xout=33F1 xout_ref=33F1 yout=0001 yout_ref=0001 zout=4EDE zout_ref=4EDE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3AF8 yin=1AF8 zin=0000 xout=2B68 xout_ref=2B68 yout=FFFE yout_ref=FFFE zout=1F9B zout_ref=1F9B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3469 yin=4000 zin=0000 xout=3469 xout_ref=3469 yout=0001 yout_ref=0001 zout=4E26 zout_ref=4E26 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3BC0 yin=1BC0 zin=0000 xout=2BD0 xout_ref=2BD0 yout=0000 yout_ref=0000 zout=202F zout_ref=202F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=34E6 yin=4000 zin=0000 xout=34E6 xout_ref=34E6 yout=0000 yout_ref=0000 zout=4D6E zout_ref=4D6E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3C88 yin=1C88 zin=0000 xout=2C35 xout_ref=2C35 yout=FFFF yout_ref=FFFF zout=20C3 zout_ref=20C3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3560 yin=4000 zin=0000 xout=3560 xout_ref=3560 yout=0000 yout_ref=0000 zout=4CBE zout_ref=4CBE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3D50 yin=1D50 zin=0000 xout=2C97 xout_ref=2C97 yout=0000 yout_ref=0000 zout=214F zout_ref=214F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=35D7 yin=4000 zin=0000 xout=35D7 xout_ref=35D7 yout=FFFE yout_ref=FFFE zout=4C12 zout_ref=4C12 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3E18 yin=1E18 zin=0000 xout=2CF7 xout_ref=2CF7 yout=FFFE yout_ref=FFFE zout=21DB zout_ref=21DB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=364B yin=4000 zin=0000 xout=364B xout_ref=364B yout=0000 yout_ref=0000 zout=4B72 zout_ref=4B72 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3EE0 yin=1EE0 zin=0000 xout=2D5A xout_ref=2D5A yout=0000 yout_ref=0000 zout=2267 zout_ref=2267 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=36C2 yin=4000 zin=0000 xout=36C2 xout_ref=36C2 yout=FFFF yout_ref=FFFF zout=4ACE zout_ref=4ACE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=3FA8 yin=1FA8 zin=0000 xout=2DB9 xout_ref=2DB9 yout=FFFF yout_ref=FFFF zout=22EB zout_ref=22EB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3735 yin=4000 zin=0000 xout=3735 xout_ref=3735 yout=FFFF yout_ref=FFFF zout=4A32 zout_ref=4A32 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4070 yin=2070 zin=0000 xout=2E1B xout_ref=2E1B yout=0002 yout_ref=0002 zout=2373 zout_ref=2373 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=37AB yin=4000 zin=0000 xout=37AB xout_ref=37AB yout=0000 yout_ref=0000 zout=4992 zout_ref=4992 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4138 yin=2138 zin=0000 xout=2E79 xout_ref=2E79 yout=0002 yout_ref=0002 zout=23F3 zout_ref=23F3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=381D yin=4000 zin=0000 xout=381D xout_ref=381D yout=0001 yout_ref=0001 zout=48FE zout_ref=48FE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4200 yin=2200 zin=0000 xout=2ED2 xout_ref=2ED2 yout=FFFD yout_ref=FFFD zout=2473 zout_ref=2473 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3888 yin=4000 zin=0000 xout=3888 xout_ref=3888 yout=FFFF yout_ref=FFFF zout=4876 zout_ref=4876 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=42C8 yin=22C8 zin=0000 xout=2F35 xout_ref=2F35 yout=0003 yout_ref=0003 zout=24F3 zout_ref=24F3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3900 yin=4000 zin=0000 xout=3900 xout_ref=3900 yout=0000 yout_ref=0000 zout=47DE zout_ref=47DE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4390 yin=2390 zin=0000 xout=2F93 xout_ref=2F93 yout=0003 yout_ref=0003 zout=2573 zout_ref=2573 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3971 yin=4000 zin=0000 xout=3971 xout_ref=3971 yout=FFFE yout_ref=FFFE zout=4752 zout_ref=4752 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4458 yin=2458 zin=0000 xout=2FEE xout_ref=2FEE yout=0000 yout_ref=0000 zout=25F3 zout_ref=25F3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=39DF yin=4000 zin=0000 xout=39DF xout_ref=39DF yout=0001 yout_ref=0001 zout=46C6 zout_ref=46C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4520 yin=2520 zin=0000 xout=3048 xout_ref=3048 yout=FFFF yout_ref=FFFF zout=2667 zout_ref=2667 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3A4C yin=4000 zin=0000 xout=3A4C xout_ref=3A4C yout=FFFD yout_ref=FFFD zout=4642 zout_ref=4642 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=45E8 yin=25E8 zin=0000 xout=30A1 xout_ref=30A1 yout=FFFF yout_ref=FFFF zout=26DF zout_ref=26DF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3AB7 yin=4000 zin=0000 xout=3AB7 xout_ref=3AB7 yout=FFFE yout_ref=FFFE zout=45C2 zout_ref=45C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=46B0 yin=26B0 zin=0000 xout=30FC xout_ref=30FC yout=0000 yout_ref=0000 zout=2753 zout_ref=2753 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3B25 yin=4000 zin=0000 xout=3B25 xout_ref=3B25 yout=FFFC yout_ref=FFFC zout=4542 zout_ref=4542 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4778 yin=2778 zin=0000 xout=3150 xout_ref=3150 yout=FFFF yout_ref=FFFF zout=27C5 zout_ref=27C5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3B8A yin=4000 zin=0000 xout=3B8A xout_ref=3B8A yout=0000 yout_ref=0000 zout=44CA zout_ref=44CA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4840 yin=2840 zin=0000 xout=31AB xout_ref=31AB yout=0000 yout_ref=0000 zout=2839 zout_ref=2839 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3BF8 yin=4000 zin=0000 xout=3BF8 xout_ref=3BF8 yout=0000 yout_ref=0000 zout=444A zout_ref=444A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4908 yin=2908 zin=0000 xout=3204 xout_ref=3204 yout=FFFF yout_ref=FFFF zout=28AD zout_ref=28AD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3C64 yin=4000 zin=0000 xout=3C64 xout_ref=3C64 yout=FFFF yout_ref=FFFF zout=43D6 zout_ref=43D6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=49D0 yin=29D0 zin=0000 xout=325C xout_ref=325C yout=FFFF yout_ref=FFFF zout=291D zout_ref=291D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3CCE yin=4000 zin=0000 xout=3CCE xout_ref=3CCE yout=FFFF yout_ref=FFFF zout=435E zout_ref=435E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4A98 yin=2A98 zin=0000 xout=32B1 xout_ref=32B1 yout=FFFF yout_ref=FFFF zout=2989 zout_ref=2989 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3D35 yin=4000 zin=0000 xout=3D35 xout_ref=3D35 yout=FFFF yout_ref=FFFF zout=42EE zout_ref=42EE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4B60 yin=2B60 zin=0000 xout=330B xout_ref=330B yout=0002 yout_ref=0002 zout=29F5 zout_ref=29F5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3DA1 yin=4000 zin=0000 xout=3DA1 xout_ref=3DA1 yout=FFFE yout_ref=FFFE zout=427A zout_ref=427A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4C28 yin=2C28 zin=0000 xout=3361 xout_ref=3361 yout=0000 yout_ref=0000 zout=2A61 zout_ref=2A61 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3E09 yin=4000 zin=0000 xout=3E09 xout_ref=3E09 yout=FFFF yout_ref=FFFF zout=4206 zout_ref=4206 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4CF0 yin=2CF0 zin=0000 xout=33B5 xout_ref=33B5 yout=0000 yout_ref=0000 zout=2ACD zout_ref=2ACD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3E6F yin=4000 zin=0000 xout=3E6F xout_ref=3E6F yout=FFFF yout_ref=FFFF zout=419A zout_ref=419A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4DB8 yin=2DB8 zin=0000 xout=340C xout_ref=340C yout=FFFF yout_ref=FFFF zout=2B35 zout_ref=2B35 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3ED8 yin=4000 zin=0000 xout=3ED8 xout_ref=3ED8 yout=FFFF yout_ref=FFFF zout=412E zout_ref=412E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4E80 yin=2E80 zin=0000 xout=345B xout_ref=345B yout=0000 yout_ref=0000 zout=2B95 zout_ref=2B95 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3F37 yin=4000 zin=0000 xout=3F37 xout_ref=3F37 yout=0001 yout_ref=0001 zout=40C6 zout_ref=40C6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=4F48 yin=2F48 zin=0000 xout=34AF xout_ref=34AF yout=FFFF yout_ref=FFFF zout=2BFD zout_ref=2BFD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=3F9C yin=4000 zin=0000 xout=3F9C xout_ref=3F9C yout=FFFE yout_ref=FFFE zout=4062 zout_ref=4062 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5010 yin=3010 zin=0000 xout=3505 xout_ref=3505 yout=0000 yout_ref=0000 zout=2C65 zout_ref=2C65 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4004 yin=4000 zin=0000 xout=4004 xout_ref=4004 yout=FFFF yout_ref=FFFF zout=3FFE zout_ref=3FFE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=50D8 yin=30D8 zin=0000 xout=3557 xout_ref=3557 yout=FFFF yout_ref=FFFF zout=2CC9 zout_ref=2CC9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4067 yin=4000 zin=0000 xout=4067 xout_ref=4067 yout=FFFF yout_ref=FFFF zout=3F9E zout_ref=3F9E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=51A0 yin=31A0 zin=0000 xout=35AB xout_ref=35AB yout=FFFF yout_ref=FFFF zout=2D2D zout_ref=2D2D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=40CD yin=4000 zin=0000 xout=40CD xout_ref=40CD yout=0001 yout_ref=0001 zout=3F36 zout_ref=3F36 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5268 yin=3268 zin=0000 xout=35F6 xout_ref=35F6 yout=0000 yout_ref=0000 zout=2D85 zout_ref=2D85 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4127 yin=4000 zin=0000 xout=4127 xout_ref=4127 yout=FFFF yout_ref=FFFF zout=3EE2 zout_ref=3EE2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5330 yin=3330 zin=0000 xout=364D xout_ref=364D yout=FFFF yout_ref=FFFF zout=2DED zout_ref=2DED +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4190 yin=4000 zin=0000 xout=4190 xout_ref=4190 yout=0001 yout_ref=0001 zout=3E7A zout_ref=3E7A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=53F8 yin=33F8 zin=0000 xout=369D xout_ref=369D yout=FFFF yout_ref=FFFF zout=2E4D zout_ref=2E4D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=41F1 yin=4000 zin=0000 xout=41F1 xout_ref=41F1 yout=FFFE yout_ref=FFFE zout=3E1E zout_ref=3E1E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=54C0 yin=34C0 zin=0000 xout=36EC xout_ref=36EC yout=FFFF yout_ref=FFFF zout=2EA9 zout_ref=2EA9 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4250 yin=4000 zin=0000 xout=4250 xout_ref=4250 yout=FFFF yout_ref=FFFF zout=3DC6 zout_ref=3DC6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5588 yin=3588 zin=0000 xout=373D xout_ref=373D yout=FFFF yout_ref=FFFF zout=2F05 zout_ref=2F05 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=42B2 yin=4000 zin=0000 xout=42B2 xout_ref=42B2 yout=0001 yout_ref=0001 zout=3D6A zout_ref=3D6A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5650 yin=3650 zin=0000 xout=378D xout_ref=378D yout=0000 yout_ref=0000 zout=2F61 zout_ref=2F61 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4313 yin=4000 zin=0000 xout=4313 xout_ref=4313 yout=FFFF yout_ref=FFFF zout=3D12 zout_ref=3D12 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5718 yin=3718 zin=0000 xout=37D6 xout_ref=37D6 yout=FFFD yout_ref=FFFD zout=2FB7 zout_ref=2FB7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=436B yin=4000 zin=0000 xout=436B xout_ref=436B yout=FFFF yout_ref=FFFF zout=3CC2 zout_ref=3CC2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=57E0 yin=37E0 zin=0000 xout=3827 xout_ref=3827 yout=0000 yout_ref=0000 zout=300F zout_ref=300F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=43CD yin=4000 zin=0000 xout=43CD xout_ref=43CD yout=0001 yout_ref=0001 zout=3C6A zout_ref=3C6A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=58A8 yin=38A8 zin=0000 xout=3875 xout_ref=3875 yout=FFFF yout_ref=FFFF zout=3067 zout_ref=3067 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=442B yin=4000 zin=0000 xout=442B xout_ref=442B yout=0001 yout_ref=0001 zout=3C16 zout_ref=3C16 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5970 yin=3970 zin=0000 xout=38C3 xout_ref=38C3 yout=FFFF yout_ref=FFFF zout=30C3 zout_ref=30C3 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4489 yin=4000 zin=0000 xout=4489 xout_ref=4489 yout=FFFE yout_ref=FFFE zout=3BC6 zout_ref=3BC6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5A38 yin=3A38 zin=0000 xout=390F xout_ref=390F yout=0000 yout_ref=0000 zout=3117 zout_ref=3117 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=44E5 yin=4000 zin=0000 xout=44E5 xout_ref=44E5 yout=0000 yout_ref=0000 zout=3B76 zout_ref=3B76 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5B00 yin=3B00 zin=0000 xout=3960 xout_ref=3960 yout=FFFF yout_ref=FFFF zout=3173 zout_ref=3173 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4547 yin=4000 zin=0000 xout=4547 xout_ref=4547 yout=FFFE yout_ref=FFFE zout=3B22 zout_ref=3B22 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5BC8 yin=3BC8 zin=0000 xout=39A9 xout_ref=39A9 yout=FFFF yout_ref=FFFF zout=31C7 zout_ref=31C7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=459F yin=4000 zin=0000 xout=459F xout_ref=459F yout=FFFE yout_ref=FFFE zout=3ADA zout_ref=3ADA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5C90 yin=3C90 zin=0000 xout=39F4 xout_ref=39F4 yout=FFFF yout_ref=FFFF zout=3217 zout_ref=3217 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=45F9 yin=4000 zin=0000 xout=45F9 xout_ref=45F9 yout=FFFE yout_ref=FFFE zout=3A8A zout_ref=3A8A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5D58 yin=3D58 zin=0000 xout=3A42 xout_ref=3A42 yout=0000 yout_ref=0000 zout=326B zout_ref=326B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4658 yin=4000 zin=0000 xout=4658 xout_ref=4658 yout=0001 yout_ref=0001 zout=3A3A zout_ref=3A3A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5E20 yin=3E20 zin=0000 xout=3A8B xout_ref=3A8B yout=0000 yout_ref=0000 zout=32BB zout_ref=32BB +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=46B0 yin=4000 zin=0000 xout=46B0 xout_ref=46B0 yout=0001 yout_ref=0001 zout=39F2 zout_ref=39F2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5EE8 yin=3EE8 zin=0000 xout=3AD7 xout_ref=3AD7 yout=0000 yout_ref=0000 zout=330F zout_ref=330F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=470B yin=4000 zin=0000 xout=470B xout_ref=470B yout=FFFE yout_ref=FFFE zout=39AA zout_ref=39AA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=5FB0 yin=3FB0 zin=0000 xout=3B24 xout_ref=3B24 yout=0000 yout_ref=0000 zout=3363 zout_ref=3363 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4768 yin=4000 zin=0000 xout=4768 xout_ref=4768 yout=0000 yout_ref=0000 zout=395E zout_ref=395E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6078 yin=4078 zin=0000 xout=3B6A xout_ref=3B6A yout=FFFF yout_ref=FFFF zout=33AF zout_ref=33AF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=47BD yin=4000 zin=0000 xout=47BD xout_ref=47BD yout=0001 yout_ref=0001 zout=3916 zout_ref=3916 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6140 yin=4140 zin=0000 xout=3BB4 xout_ref=3BB4 yout=FFFF yout_ref=FFFF zout=33FF zout_ref=33FF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4816 yin=4000 zin=0000 xout=4816 xout_ref=4816 yout=0000 yout_ref=0000 zout=38D2 zout_ref=38D2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6208 yin=4208 zin=0000 xout=3BFD xout_ref=3BFD yout=FFFF yout_ref=FFFF zout=344B zout_ref=344B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=486E yin=4000 zin=0000 xout=486E xout_ref=486E yout=0000 yout_ref=0000 zout=388E zout_ref=388E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=62D0 yin=42D0 zin=0000 xout=3C45 xout_ref=3C45 yout=FFFF yout_ref=FFFF zout=349B zout_ref=349B +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=48C5 yin=4000 zin=0000 xout=48C5 xout_ref=48C5 yout=FFFF yout_ref=FFFF zout=384A zout_ref=384A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6398 yin=4398 zin=0000 xout=3C91 xout_ref=3C91 yout=0001 yout_ref=0001 zout=34E7 zout_ref=34E7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4921 yin=4000 zin=0000 xout=4921 xout_ref=4921 yout=FFFE yout_ref=FFFE zout=3802 zout_ref=3802 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6460 yin=4460 zin=0000 xout=3CDA xout_ref=3CDA yout=FFFF yout_ref=FFFF zout=3537 zout_ref=3537 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4979 yin=4000 zin=0000 xout=4979 xout_ref=4979 yout=FFFF yout_ref=FFFF zout=37C2 zout_ref=37C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6528 yin=4528 zin=0000 xout=3D23 xout_ref=3D23 yout=FFFF yout_ref=FFFF zout=3583 zout_ref=3583 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=49D1 yin=4000 zin=0000 xout=49D1 xout_ref=49D1 yout=0002 yout_ref=0002 zout=377E zout_ref=377E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=65F0 yin=45F0 zin=0000 xout=3D65 xout_ref=3D65 yout=FFFF yout_ref=FFFF zout=35C7 zout_ref=35C7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4A21 yin=4000 zin=0000 xout=4A21 xout_ref=4A21 yout=FFFE yout_ref=FFFE zout=3742 zout_ref=3742 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=66B8 yin=46B8 zin=0000 xout=3DB0 xout_ref=3DB0 yout=FFFF yout_ref=FFFF zout=3617 zout_ref=3617 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4A7C yin=4000 zin=0000 xout=4A7C xout_ref=4A7C yout=0003 yout_ref=0003 zout=36FE zout_ref=36FE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6780 yin=4780 zin=0000 xout=3DF6 xout_ref=3DF6 yout=FFFF yout_ref=FFFF zout=365F zout_ref=365F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4AD0 yin=4000 zin=0000 xout=4AD0 xout_ref=4AD0 yout=FFFD yout_ref=FFFD zout=36C2 zout_ref=36C2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6848 yin=4848 zin=0000 xout=3E3E xout_ref=3E3E yout=0002 yout_ref=0002 zout=36A7 zout_ref=36A7 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4B27 yin=4000 zin=0000 xout=4B27 xout_ref=4B27 yout=FFFD yout_ref=FFFD zout=3682 zout_ref=3682 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6910 yin=4910 zin=0000 xout=3E85 xout_ref=3E85 yout=0000 yout_ref=0000 zout=36EF zout_ref=36EF +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4B7D yin=4000 zin=0000 xout=4B7D xout_ref=4B7D yout=FFFF yout_ref=FFFF zout=3642 zout_ref=3642 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=69D8 yin=49D8 zin=0000 xout=3EC9 xout_ref=3EC9 yout=FFFE yout_ref=FFFE zout=3737 zout_ref=3737 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4BCF yin=4000 zin=0000 xout=4BCF xout_ref=4BCF yout=FFFF yout_ref=FFFF zout=3606 zout_ref=3606 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6AA0 yin=4AA0 zin=0000 xout=3F12 xout_ref=3F12 yout=FFFF yout_ref=FFFF zout=377F zout_ref=377F +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4C27 yin=4000 zin=0000 xout=4C27 xout_ref=4C27 yout=0000 yout_ref=0000 zout=35CA zout_ref=35CA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6B68 yin=4B68 zin=0000 xout=3F53 xout_ref=3F53 yout=FFFF yout_ref=FFFF zout=37C1 zout_ref=37C1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4C76 yin=4000 zin=0000 xout=4C76 xout_ref=4C76 yout=0001 yout_ref=0001 zout=3592 zout_ref=3592 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6C30 yin=4C30 zin=0000 xout=3F9C xout_ref=3F9C yout=0004 yout_ref=0004 zout=3809 zout_ref=3809 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4CCE yin=4000 zin=0000 xout=4CCE xout_ref=4CCE yout=FFFF yout_ref=FFFF zout=3556 zout_ref=3556 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6CF8 yin=4CF8 zin=0000 xout=3FDE xout_ref=3FDE yout=FFFF yout_ref=FFFF zout=384D zout_ref=384D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4D1D yin=4000 zin=0000 xout=4D1D xout_ref=4D1D yout=0001 yout_ref=0001 zout=351E zout_ref=351E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6DC0 yin=4DC0 zin=0000 xout=4021 xout_ref=4021 yout=0000 yout_ref=0000 zout=3891 zout_ref=3891 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4D6E yin=4000 zin=0000 xout=4D6E xout_ref=4D6E yout=0000 yout_ref=0000 zout=34E6 zout_ref=34E6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6E88 yin=4E88 zin=0000 xout=4067 xout_ref=4067 yout=0001 yout_ref=0001 zout=38D5 zout_ref=38D5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4DC3 yin=4000 zin=0000 xout=4DC3 xout_ref=4DC3 yout=FFFF yout_ref=FFFF zout=34AE zout_ref=34AE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=6F50 yin=4F50 zin=0000 xout=40AA xout_ref=40AA yout=0001 yout_ref=0001 zout=3919 zout_ref=3919 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4E14 yin=4000 zin=0000 xout=4E14 xout_ref=4E14 yout=0001 yout_ref=0001 zout=3476 zout_ref=3476 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7018 yin=5018 zin=0000 xout=40F0 xout_ref=40F0 yout=0000 yout_ref=0000 zout=395D zout_ref=395D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4E68 yin=4000 zin=0000 xout=4E68 xout_ref=4E68 yout=0000 yout_ref=0000 zout=343E zout_ref=343E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=70E0 yin=50E0 zin=0000 xout=4131 xout_ref=4131 yout=0001 yout_ref=0001 zout=399D zout_ref=399D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4EB7 yin=4000 zin=0000 xout=4EB7 xout_ref=4EB7 yout=0001 yout_ref=0001 zout=3406 zout_ref=3406 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=71A8 yin=51A8 zin=0000 xout=4176 xout_ref=4176 yout=FFFF yout_ref=FFFF zout=39E1 zout_ref=39E1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4F0A yin=4000 zin=0000 xout=4F0A xout_ref=4F0A yout=0000 yout_ref=0000 zout=33D2 zout_ref=33D2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7270 yin=5270 zin=0000 xout=41B8 xout_ref=41B8 yout=0000 yout_ref=0000 zout=3A21 zout_ref=3A21 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4F5A yin=4000 zin=0000 xout=4F5A xout_ref=4F5A yout=0002 yout_ref=0002 zout=339E zout_ref=339E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7338 yin=5338 zin=0000 xout=41FC xout_ref=41FC yout=FFFE yout_ref=FFFE zout=3A65 zout_ref=3A65 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4FAC yin=4000 zin=0000 xout=4FAC xout_ref=4FAC yout=0000 yout_ref=0000 zout=336A zout_ref=336A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7400 yin=5400 zin=0000 xout=423D xout_ref=423D yout=0001 yout_ref=0001 zout=3AA1 zout_ref=3AA1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=4FFA yin=4000 zin=0000 xout=4FFA xout_ref=4FFA yout=FFFE yout_ref=FFFE zout=333A zout_ref=333A +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=74C8 yin=54C8 zin=0000 xout=4281 xout_ref=4281 yout=0001 yout_ref=0001 zout=3AE1 zout_ref=3AE1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=504C yin=4000 zin=0000 xout=504C xout_ref=504C yout=0000 yout_ref=0000 zout=3302 zout_ref=3302 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7590 yin=5590 zin=0000 xout=42C3 xout_ref=42C3 yout=FFFE yout_ref=FFFE zout=3B25 zout_ref=3B25 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=509C yin=4000 zin=0000 xout=509C xout_ref=509C yout=FFFD yout_ref=FFFD zout=32D2 zout_ref=32D2 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7658 yin=5658 zin=0000 xout=4306 xout_ref=4306 yout=FFFF yout_ref=FFFF zout=3B61 zout_ref=3B61 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=50ED yin=4000 zin=0000 xout=50ED xout_ref=50ED yout=FFFF yout_ref=FFFF zout=329E zout_ref=329E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7720 yin=5720 zin=0000 xout=4343 xout_ref=4343 yout=0000 yout_ref=0000 zout=3B9D zout_ref=3B9D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=5137 yin=4000 zin=0000 xout=5137 xout_ref=5137 yout=FFFD yout_ref=FFFD zout=3272 zout_ref=3272 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=77E8 yin=57E8 zin=0000 xout=4385 xout_ref=4385 yout=0000 yout_ref=0000 zout=3BDD zout_ref=3BDD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=5186 yin=4000 zin=0000 xout=5186 xout_ref=5186 yout=0001 yout_ref=0001 zout=323E zout_ref=323E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=78B0 yin=58B0 zin=0000 xout=43C5 xout_ref=43C5 yout=0000 yout_ref=0000 zout=3C19 zout_ref=3C19 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=51D4 yin=4000 zin=0000 xout=51D4 xout_ref=51D4 yout=FFFE yout_ref=FFFE zout=320E zout_ref=320E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7978 yin=5978 zin=0000 xout=4409 xout_ref=4409 yout=FFFE yout_ref=FFFE zout=3C59 zout_ref=3C59 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=5226 yin=4000 zin=0000 xout=5226 xout_ref=5226 yout=FFFF yout_ref=FFFF zout=31DE zout_ref=31DE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7A40 yin=5A40 zin=0000 xout=4447 xout_ref=4447 yout=FFFE yout_ref=FFFE zout=3C95 zout_ref=3C95 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=5271 yin=4000 zin=0000 xout=5271 xout_ref=5271 yout=0002 yout_ref=0002 zout=31AE zout_ref=31AE +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7B08 yin=5B08 zin=0000 xout=4489 xout_ref=4489 yout=FFFE yout_ref=FFFE zout=3CD1 zout_ref=3CD1 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=52C0 yin=4000 zin=0000 xout=52C0 xout_ref=52C0 yout=FFFC yout_ref=FFFC zout=3182 zout_ref=3182 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7BD0 yin=5BD0 zin=0000 xout=44C6 xout_ref=44C6 yout=FFFE yout_ref=FFFE zout=3D0D zout_ref=3D0D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=530A yin=4000 zin=0000 xout=530A xout_ref=530A yout=0001 yout_ref=0001 zout=3152 zout_ref=3152 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7C98 yin=5C98 zin=0000 xout=4509 xout_ref=4509 yout=FFFE yout_ref=FFFE zout=3D49 zout_ref=3D49 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=535B yin=4000 zin=0000 xout=535B xout_ref=535B yout=0000 yout_ref=0000 zout=3122 zout_ref=3122 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7D60 yin=5D60 zin=0000 xout=4549 xout_ref=4549 yout=FFFF yout_ref=FFFF zout=3D85 zout_ref=3D85 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=53A8 yin=4000 zin=0000 xout=53A8 xout_ref=53A8 yout=0002 yout_ref=0002 zout=30F6 zout_ref=30F6 +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7E28 yin=5E28 zin=0000 xout=4587 xout_ref=4587 yout=FFFE yout_ref=FFFE zout=3DBD zout_ref=3DBD +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=53F3 yin=4000 zin=0000 xout=53F3 xout_ref=53F3 yout=FFFF yout_ref=FFFF zout=30CA zout_ref=30CA +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7EF0 yin=5EF0 zin=0000 xout=45C6 xout_ref=45C6 yout=FFFF yout_ref=FFFF zout=3DF5 zout_ref=3DF5 +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=543F yin=4000 zin=0000 xout=543F xout_ref=543F yout=0000 yout_ref=0000 zout=309E zout_ref=309E +CORDIC OK: Number of cycles=73 + direction=0001 mode=0002 xin=7FB8 yin=5FB8 zin=0000 xout=4605 xout_ref=4605 yout=0001 yout_ref=0001 zout=3E2D zout_ref=3E2D +CORDIC OK: Number of cycles=78 + direction=0001 mode=0001 xin=548B yin=4000 zin=0000 xout=548B xout_ref=548B yout=0000 yout_ref=0000 zout=3072 zout_ref=3072 +CORDIC OK: Number of cycles=73 +CORDIC algorithm test has passed
trunk/sim/rtl_sim/out/cordic_alg_test_results.txt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/bin/cordic.mk =================================================================== --- trunk/sim/rtl_sim/bin/cordic.mk (nonexistent) +++ trunk/sim/rtl_sim/bin/cordic.mk (revision 2) @@ -0,0 +1,28 @@ +# File automatically generated by "cdfg2hdl". +# Filename: cordic +# Author: Nikolaos Kavvadias (C) 2009, 2010, 2011, 2012, 2013, 2014 + +GHDL=ghdl +GHDLFLAGS=--ieee=standard -fexplicit --workdir=work +GHDLRUNFLAGS=--vcd=cordic_fsmd.vcd --stop-time=2147483647ns + +all : run + +elab : force + $(GHDL) -c $(GHDLFLAGS) -e cordic_tb + +run : force + $(GHDL) --elab-run $(GHDLFLAGS) cordic_tb $(GHDLRUNFLAGS) + +init : force + mkdir work + $(GHDL) -a $(GHDLFLAGS) ../vhdl/std_logic_textio.vhd + $(GHDL) -a $(GHDLFLAGS) ../vhdl/operpack.vhd + $(GHDL) -a $(GHDLFLAGS) ../../../rtl/vhdl/cordic_cdt_pkg.vhd + $(GHDL) -a $(GHDLFLAGS) ../../../rtl/vhdl/cordic.vhd + $(GHDL) -a $(GHDLFLAGS) ../../../bench/vhdl/cordic_tb.vhd + +force : + +clean : + rm -rf *.o work
trunk/sim/rtl_sim/bin/cordic.mk Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/vhdl/std_logic_textio.vhd =================================================================== --- trunk/sim/rtl_sim/vhdl/std_logic_textio.vhd (nonexistent) +++ trunk/sim/rtl_sim/vhdl/std_logic_textio.vhd (revision 2) @@ -0,0 +1,682 @@ +-- -------------------------------------------------------------------- +-- +-- Title : std_logic_textio +-- Library : This package shall be compiled into a library +-- : symbolically named IEEE. +-- : +-- Developers: Adapted by IEEE P1164 Working Group from +-- : source donated by Synopsys, Inc. +-- : +-- Purpose : This packages defines procedures for reading and writing +-- : standard-logic scalars and vectors in binary, hexadecimal +-- : and octal format. +-- : +-- Limitation: None. +-- : +-- Note : No declarations or definitions shall be included in, +-- : or excluded from this package. The "package declaration" +-- : defines the procedures of std_logic_textio. +-- : The std_logic_textio package body shall be +-- : considered the formal definition of the semantics of +-- : this package, except that where a procedure issues an +-- : assertion violation, the standard does not specify the +-- : required behavior in response to the erroneous condition. +-- : Tool developers may choose to implement the package body +-- : in the most efficient manner available to them. +-- : +-- -------------------------------------------------------------------- +-- +-- Copyright (c) 1990, 1991, 1992 by Synopsys, Inc. All rights reserved. +-- +-- This source file may be used and distributed without restriction +-- provided that this copyright statement is not removed from the file +-- and that any derivative work contains this copyright notice. +-- +-- -------------------------------------------------------------------- + +use STD.textio.all; +library IEEE; +use IEEE.std_logic_1164.all; + +package STD_LOGIC_TEXTIO is + + -- Read and Write procedures for STD_ULOGIC and STD_ULOGIC_VECTOR + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC; GOOD: out BOOLEAN); + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC); + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD: out BOOLEAN); + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR); + + procedure WRITE (L: inout LINE; VALUE: in STD_ULOGIC; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0); + + procedure WRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0); + + -- Read and Write procedures for STD_LOGIC_VECTOR + + procedure READ (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN); + procedure READ (L: inout LINE; VALUE: out STD_LOGIC_VECTOR); + + procedure WRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0); + + -- Read and Write procedures for Hex values + + procedure HREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD : out BOOLEAN); + procedure HREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR); + + procedure HWRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD:in WIDTH := 0); + + procedure HREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN); + procedure HREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR); + + procedure HWRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0); + + -- Read and Write procedures for Octal values + + procedure OREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD: out BOOLEAN); + procedure OREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR); + + procedure OWRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED:in SIDE := RIGHT; FIELD:in WIDTH := 0); + + procedure OREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN); + procedure OREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR); + + procedure OWRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED:in SIDE := RIGHT; FIELD:in WIDTH := 0); + +end STD_LOGIC_TEXTIO; + + +package body STD_LOGIC_TEXTIO is + + -- Type and constant definitions used to map STD_ULOGIC values + -- into/from character values. + + type MVL9plus is ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-', ERROR); + type char_indexed_by_MVL9 is array (STD_ULOGIC) of character; + type MVL9_indexed_by_char is array (character) of STD_ULOGIC; + type MVL9plus_indexed_by_char is array (character) of MVL9plus; + + constant MVL9_to_char: char_indexed_by_MVL9 := "UX01ZWLH-"; + constant char_to_MVL9: MVL9_indexed_by_char := + ('U' => 'U', 'X' => 'X', '0' => '0', '1' => '1', 'Z' => 'Z', + 'W' => 'W', 'L' => 'L', 'H' => 'H', '-' => '-', others => 'U'); + constant char_to_MVL9plus: MVL9plus_indexed_by_char := + ('U' => 'U', 'X' => 'X', '0' => '0', '1' => '1', 'Z' => 'Z', + 'W' => 'W', 'L' => 'L', 'H' => 'H', '-' => '-', others => ERROR); + + constant NBSP : character := character'val(160); + + -- Read and Write procedures for STD_ULOGIC and STD_ULOGIC_VECTOR + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC; GOOD: out BOOLEAN) is + variable c: character; + variable readOk: BOOLEAN; + begin + loop -- skip white space + read(l, c, readOk); -- but also exit on a bad read + exit when (readOk = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + if not readOk then + good := FALSE; + else + if char_to_MVL9plus(c) = ERROR then + value := 'U'; + good := FALSE; + else + value := char_to_MVL9(c); + good := TRUE; + end if; + end if; + end READ; + + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD: out BOOLEAN) is + variable m: STD_ULOGIC; + variable c: character; + variable s: string(1 to value'length-1); + variable mv: STD_ULOGIC_VECTOR(0 to value'length-1); + constant allU: STD_ULOGIC_VECTOR(0 to value'length-1) + := (others => 'U'); + variable readOk: BOOLEAN; + + begin + loop -- skip white space + read(l, c, readOk); + exit when (readOk = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + -- Bail out if there was a bad read + if not readOk then + good := FALSE; + return; + end if; + + if char_to_MVL9plus(c) = ERROR then + value := allU; + good := FALSE; + return; + end if; + + read(l, s, readOk); + -- Bail out if there was a bad read + if not readOk then + good := FALSE; + return; + end if; + + for i in 1 to value'length-1 loop + if char_to_MVL9plus(s(i)) = ERROR then + value := allU; + good := FALSE; + return; + end if; + end loop; + + mv(0) := char_to_MVL9(c); + for i in 1 to value'length-1 loop + mv(i) := char_to_MVL9(s(i)); + end loop; + value := mv; + good := TRUE; + end READ; + + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC) is + variable c: character; + begin + loop -- skip white space + read(l, c); + exit when (c /= ' ') and (c /= NBSP) and (c /= HT); + end loop; + + if char_to_MVL9plus(c) = ERROR then + value := 'U'; + assert FALSE report "READ(STD_ULOGIC) Error: Character '" & + c & "' read, expected STD_ULOGIC literal."; + else + value := char_to_MVL9(c); + end if; + end READ; + + + procedure READ (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR) is + variable m: STD_ULOGIC; + variable c: character; + variable s: string(1 to value'length-1); + variable mv: STD_ULOGIC_VECTOR(0 to value'length-1); + constant allU: STD_ULOGIC_VECTOR(0 to value'length-1) + := (others => 'U'); + begin + loop -- skip white space + read(l, c); + exit when (c /= ' ') and (c /= NBSP) and (c /= HT); + end loop; + + if char_to_MVL9plus(c) = ERROR then + value := allU; + assert FALSE report + "READ(STD_ULOGIC_VECTOR) Error: Character '" & + c & "' read, expected STD_ULOGIC literal."; + return; + end if; + + read(l, s); + for i in 1 to value'length-1 loop + if char_to_MVL9plus(s(i)) = ERROR then + value := allU; + assert FALSE report + "READ(STD_ULOGIC_VECTOR) Error: Character '" & + s(i) & "' read, expected STD_ULOGIC literal."; + return; + end if; + end loop; + + mv(0) := char_to_MVL9(c); + for i in 1 to value'length-1 loop + mv(i) := char_to_MVL9(s(i)); + end loop; + value := mv; + end READ; + + + procedure WRITE (L: inout LINE; VALUE: in STD_ULOGIC; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + begin + write(l, MVL9_to_char(value), justified, field); + end WRITE; + + + procedure WRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + variable s: string(1 to value'length); + variable m: STD_ULOGIC_VECTOR(1 to value'length) := value; + begin + for i in 1 to value'length loop + s(i) := MVL9_to_char(m(i)); + end loop; + write(l, s, justified, field); + end WRITE; + + + -- Read and Write procedures for STD_LOGIC_VECTOR + + procedure READ (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + READ(L, tmp, GOOD); + VALUE := STD_LOGIC_VECTOR(tmp); + end READ; + + + procedure READ (L: inout LINE; VALUE: out STD_LOGIC_VECTOR) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + READ(L, tmp); + VALUE := STD_LOGIC_VECTOR(tmp); + end READ; + + + procedure WRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + begin + WRITE(L, STD_ULOGIC_VECTOR(VALUE), JUSTIFIED, FIELD); + end WRITE; + + + -- Hex Read and Write procedures for STD_ULOGIC_VECTOR. + + procedure Char2QuadBits (C: Character; + RESULT: out std_ulogic_vector(3 downto 0); + GOOD: out Boolean; + ISSUE_ERROR: in Boolean) is + begin + case c is + when '0' => result := x"0"; good := TRUE; + when '1' => result := x"1"; good := TRUE; + when '2' => result := x"2"; good := TRUE; + when '3' => result := x"3"; good := TRUE; + when '4' => result := x"4"; good := TRUE; + when '5' => result := x"5"; good := TRUE; + when '6' => result := x"6"; good := TRUE; + when '7' => result := x"7"; good := TRUE; + when '8' => result := x"8"; good := TRUE; + when '9' => result := x"9"; good := TRUE; + when 'A' | 'a' => result := x"A"; good := TRUE; + when 'B' | 'b' => result := x"B"; good := TRUE; + when 'C' | 'c' => result := x"C"; good := TRUE; + when 'D' | 'd' => result := x"D"; good := TRUE; + when 'E' | 'e' => result := x"E"; good := TRUE; + when 'F' | 'f' => result := x"F"; good := TRUE; + when 'Z' => result := "ZZZZ"; good := TRUE; + when 'X' => result := "XXXX"; good := TRUE; + when others => + if ISSUE_ERROR then + assert FALSE report + "HREAD Error: Read a '" & c & + "', expected a Hex character (0-F)."; + end if; + good := FALSE; + end case; + end; + + + procedure HREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD: out BOOLEAN) is + variable ok: boolean; + variable c: character; + constant ne: integer := value'length/4; + variable sv: std_ulogic_vector(0 to value'length-1); + variable s: string(1 to ne-1); + begin + if value'length mod 4 /= 0 then + good := FALSE; + return; + end if; + + loop -- skip white space + read(l, c, ok); + exit when (ok = FALSE) or (c = LF) or (c = CR) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); +-- exit when (ok = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + -- Bail out if there was a bad read + if not ok then + good := FALSE; + return; + end if; + + Char2QuadBits(c, sv(0 to 3), ok, FALSE); + if not ok then + good := FALSE; + return; + end if; + + read(L, s, ok); + if not ok then + good := FALSE; + return; + end if; + + for i in 1 to ne-1 loop + Char2QuadBits(s(i), sv(4*i to 4*i+3), ok, FALSE); + if not ok then + good := FALSE; + return; + end if; + end loop; + good := TRUE; + value := sv; + end HREAD; + + + procedure HREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR) is + variable ok: boolean; + variable c: character; + constant ne: integer := value'length/4; + variable sv: std_ulogic_vector(0 to value'length-1); + variable s: string(1 to ne-1); + begin + if value'length mod 4 /= 0 then + assert FALSE report + "HREAD Error: Trying to read vector " & + "with an odd (non multiple of 4) length"; + return; + end if; + + loop -- skip white space + read(l, c, ok); + exit when (ok = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + -- Bail out if there was a bad read + if not ok then + assert FALSE + report "HREAD Error: Failed skipping white space"; + return; + end if; + + Char2QuadBits(c, sv(0 to 3), ok, TRUE); + if not ok then + return; + end if; + + read(L, s, ok); + if not ok then + assert FALSE + report "HREAD Error: Failed to read the STRING"; + return; + end if; + + for i in 1 to ne-1 loop + Char2QuadBits(s(i), sv(4*i to 4*i+3), ok, TRUE); + if not ok then + return; + end if; + end loop; + value := sv; + end HREAD; + + + procedure HWRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + variable quad: std_ulogic_vector(0 to 3); + constant ne: integer := value'length/4; + variable sv: std_ulogic_vector(0 to value'length-1) := value; + variable s: string(1 to ne); + begin + if value'length mod 4 /= 0 then + assert FALSE report + "HWRITE Error: Trying to read vector " & + "with an odd (non multiple of 4) length"; + return; + end if; + + for i in 0 to ne-1 loop + quad := To_X01Z(sv(4*i to 4*i+3)); + case quad is + when x"0" => s(i+1) := '0'; + when x"1" => s(i+1) := '1'; + when x"2" => s(i+1) := '2'; + when x"3" => s(i+1) := '3'; + when x"4" => s(i+1) := '4'; + when x"5" => s(i+1) := '5'; + when x"6" => s(i+1) := '6'; + when x"7" => s(i+1) := '7'; + when x"8" => s(i+1) := '8'; + when x"9" => s(i+1) := '9'; + when x"A" => s(i+1) := 'A'; + when x"B" => s(i+1) := 'B'; + when x"C" => s(i+1) := 'C'; + when x"D" => s(i+1) := 'D'; + when x"E" => s(i+1) := 'E'; + when x"F" => s(i+1) := 'F'; + when others => + if (quad = "ZZZZ") then + s(i+1) := 'Z'; + else + s(i+1) := 'X'; + end if; + end case; + end loop; + write(L, s, JUSTIFIED, FIELD); + end HWRITE; + + + -- Octal Read and Write procedures for STD_ULOGIC_VECTOR. + + procedure Char2TriBits (C: Character; + RESULT: out std_ulogic_vector(2 downto 0); + GOOD: out Boolean; + ISSUE_ERROR: in Boolean) is + begin + case c is + when '0' => result := o"0"; good := TRUE; + when '1' => result := o"1"; good := TRUE; + when '2' => result := o"2"; good := TRUE; + when '3' => result := o"3"; good := TRUE; + when '4' => result := o"4"; good := TRUE; + when '5' => result := o"5"; good := TRUE; + when '6' => result := o"6"; good := TRUE; + when '7' => result := o"7"; good := TRUE; + when 'Z' => result := "ZZZ"; good := TRUE; + when 'X' => result := "XXX"; good := TRUE; + when others => + if ISSUE_ERROR then + assert FALSE report + "OREAD Error: Read a '" & c & + "', expected an Octal character (0-7)."; + end if; + good := FALSE; + end case; + end; + + + procedure OREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR; GOOD: out BOOLEAN) is + variable ok: boolean; + variable c: character; + constant ne: integer := value'length/3; + variable sv: std_ulogic_vector(0 to value'length-1); + variable s: string(1 to ne-1); + begin + if value'length mod 3 /= 0 then + good := FALSE; + return; + end if; + + loop -- skip white space + read(l, c, ok); + exit when (ok = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + -- Bail out if there was a bad read + if not ok then + good := FALSE; + return; + end if; + + Char2TriBits(c, sv(0 to 2), ok, FALSE); + if not ok then + good := FALSE; + return; + end if; + + read(L, s, ok); + if not ok then + good := FALSE; + return; + end if; + + for i in 1 to ne-1 loop + Char2TriBits(s(i), sv(3*i to 3*i+2), ok, FALSE); + if not ok then + good := FALSE; + return; + end if; + end loop; + good := TRUE; + value := sv; + end OREAD; + + + procedure OREAD (L: inout LINE; VALUE: out STD_ULOGIC_VECTOR) is + variable c: character; + variable ok: boolean; + constant ne: integer := value'length/3; + variable sv: std_ulogic_vector(0 to value'length-1); + variable s: string(1 to ne-1); + begin + if value'length mod 3 /= 0 then + assert FALSE report + "OREAD Error: Trying to read vector " & + "with an odd (non multiple of 3) length"; + return; + end if; + + loop -- skip white space + read(l, c, ok); + exit when (ok = FALSE) or ((c /= ' ') and (c /= NBSP) and (c /= HT)); + end loop; + + -- Bail out if there was a bad read + if not ok then + assert FALSE + report "OREAD Error: Failed skipping white space"; + return; + end if; + + Char2TriBits(c, sv(0 to 2), ok, TRUE); + if not ok then + return; + end if; + + read(L, s, ok); + if not ok then + assert FALSE + report "OREAD Error: Failed to read the STRING"; + return; + end if; + + for i in 1 to ne-1 loop + Char2TriBits(s(i), sv(3*i to 3*i+2), ok, TRUE); + if not ok then + return; + end if; + end loop; + value := sv; + end OREAD; + + + procedure OWRITE (L: inout LINE; VALUE: in STD_ULOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + variable tri: std_ulogic_vector(0 to 2); + constant ne: integer := value'length/3; + variable sv: std_ulogic_vector(0 to value'length-1) := value; + variable s: string(1 to ne); + begin + if value'length mod 3 /= 0 then + assert FALSE report + "OWRITE Error: Trying to read vector " & + "with an odd (non multiple of 3) length"; + return; + end if; + + for i in 0 to ne-1 loop + tri := To_X01Z(sv(3*i to 3*i+2)); + case tri is + when o"0" => s(i+1) := '0'; + when o"1" => s(i+1) := '1'; + when o"2" => s(i+1) := '2'; + when o"3" => s(i+1) := '3'; + when o"4" => s(i+1) := '4'; + when o"5" => s(i+1) := '5'; + when o"6" => s(i+1) := '6'; + when o"7" => s(i+1) := '7'; + when others => + if (tri = "ZZZ") then + s(i+1) := 'Z'; + else + s(i+1) := 'X'; + end if; + end case; + end loop; + write(L, s, JUSTIFIED, FIELD); + end OWRITE; + + + -- Hex Read and Write procedures for STD_LOGIC_VECTOR + + procedure HREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + HREAD(L, tmp, GOOD); + VALUE := STD_LOGIC_VECTOR(tmp); + end HREAD; + + + procedure HREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + HREAD(L, tmp); + VALUE := STD_LOGIC_VECTOR(tmp); + end HREAD; + + + procedure HWRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + begin + HWRITE(L, STD_ULOGIC_VECTOR(VALUE), JUSTIFIED, FIELD); + end HWRITE; + + + -- Octal Read and Write procedures for STD_LOGIC_VECTOR + + procedure OREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR; GOOD: out BOOLEAN) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + OREAD(L, tmp, GOOD); + VALUE := STD_LOGIC_VECTOR(tmp); + end OREAD; + + procedure OREAD (L: inout LINE; VALUE: out STD_LOGIC_VECTOR) is + variable tmp: STD_ULOGIC_VECTOR(VALUE'length-1 downto 0); + begin + OREAD(L, tmp); + VALUE := STD_LOGIC_VECTOR(tmp); + end OREAD; + + + procedure OWRITE (L: inout LINE; VALUE: in STD_LOGIC_VECTOR; + JUSTIFIED: in SIDE := RIGHT; FIELD: in WIDTH := 0) is + begin + OWRITE(L, STD_ULOGIC_VECTOR(VALUE), JUSTIFIED, FIELD); + end OWRITE; + + +end STD_LOGIC_TEXTIO;
trunk/sim/rtl_sim/vhdl/std_logic_textio.vhd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sim/rtl_sim/vhdl/operpack.vhd =================================================================== --- trunk/sim/rtl_sim/vhdl/operpack.vhd (nonexistent) +++ trunk/sim/rtl_sim/vhdl/operpack.vhd (revision 2) @@ -0,0 +1,81 @@ +-------------------------------------------------------------------------------- +-- Filename: operpack.vhd +-- Purpose : Package for various arithmetic operators: +-- * Variable shifter (left shift unsigned, left shift signed, right +-- shift unsigned, right shift signed) +-- * Multipliers (mul, smul, umul) +-- * Dividers and modulo extractors (divqr, divq, divr) +-- * Bit manipulation operators (bitinsert, bitextract) +-- +-- Author : Nikolaos Kavvadias (C) 2009, 2010, 2011, 2012, 2013, 2014 +-- Date : 22-Feb-2014 +-- Revision: 0.0.0 (03/10/09) +-- Initial version. +-- 0.2.0 (12/10/09) +-- Added mul, umul, smul operators. +-- 0.3.0 (22/01/10) +-- Added divqr, divq, divr operators. +-- 0.3.1 (20/07/10) +-- All input procedure parameters are not necessarily of the signal +-- type. +-- 0.3.2 (14/10/10) +-- Spin-off of file "operpack.vhd". Supports the "real" IEEE standard +-- libraries (numeric_std). +-- 0.3.3 (01/05/11) +-- Added bitinsert, bitextract operators. +-- 0.4.9 (25/02/12) +-- Added support for shrv6, shlv6 (64-bit quantities). +-- 1.0.0 (22/02/14) +-- Underhanded version: removed all functionality except shrv4 which +-- needed for the CORDIC IP CORE. +-- +-------------------------------------------------------------------------------- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + + +package operpack is + + function shrv4 (a, b : std_logic_vector; mode : std_logic) return std_logic_vector; + constant ONE : std_logic_vector(0 downto 0) := "1"; + +end operpack; + + +package body operpack is + + function shrv4 (a, b : std_logic_vector; mode : std_logic) return std_logic_vector is + variable shift1R, shift2R, shift4R, shift8R : std_logic_vector(a'RANGE); + variable fills : std_logic_vector(a'LENGTH-1 downto a'LENGTH/2); + begin + if (mode = '1' and a(a'LENGTH-1) = '1') then + fills := (others => '1'); + else + fills := (others => '0'); + end if; + if (b(0) = '1') then + shift1R := fills(a'LENGTH-1 downto a'LENGTH-1) & a(a'LENGTH-1 downto 1); + else + shift1R := a; + end if; + if (b(1) = '1') then + shift2R := fills(a'LENGTH-1 downto a'LENGTH-2) & shift1R(a'LENGTH-1 downto 2); + else + shift2R := shift1R; + end if; + if (b(2) = '1') then + shift4R := fills(a'LENGTH-1 downto a'LENGTH-4) & shift2R(a'LENGTH-1 downto 4); + else + shift4R := shift2R; + end if; + if (b(3) = '1') then + shift8R := fills(a'LENGTH-1 downto a'LENGTH-8) & shift4R(a'LENGTH-1 downto 8); + else + shift8R := shift4R; + end if; + return (shift8R); + end shrv4; + +end operpack;
trunk/sim/rtl_sim/vhdl/operpack.vhd Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sw/cordic-flp.txt =================================================================== --- trunk/sw/cordic-flp.txt (nonexistent) +++ trunk/sw/cordic-flp.txt (revision 2) @@ -0,0 +1,698 @@ +SINE, COSINE +0.000000 : cos=0.999939 (1.000000), sin=0.000122 (0.000000) +0.031416 : cos=0.999390 (0.999507), sin=0.031494 (0.031411) +0.062832 : cos=0.998047 (0.998027), sin=0.062988 (0.062791) +0.094248 : cos=0.995422 (0.995562), sin=0.094116 (0.094108) +0.125664 : cos=0.992126 (0.992115), sin=0.125488 (0.125333) +0.157080 : cos=0.987732 (0.987688), sin=0.156433 (0.156434) +0.188496 : cos=0.982300 (0.982287), sin=0.187561 (0.187381) +0.219911 : cos=0.975830 (0.975917), sin=0.218140 (0.218143) +0.251327 : cos=0.968628 (0.968583), sin=0.248901 (0.248690) +0.282743 : cos=0.960205 (0.960294), sin=0.279053 (0.278991) +0.314159 : cos=0.950867 (0.951057), sin=0.309265 (0.309017) +0.345575 : cos=0.940857 (0.940881), sin=0.338684 (0.338738) +0.376991 : cos=0.929688 (0.929776), sin=0.368225 (0.368125) +0.408407 : cos=0.917725 (0.917755), sin=0.397278 (0.397148) +0.439823 : cos=0.904846 (0.904827), sin=0.425903 (0.425779) +0.471239 : cos=0.891052 (0.891007), sin=0.454102 (0.453990) +0.502655 : cos=0.876099 (0.876307), sin=0.481995 (0.481754) +0.534071 : cos=0.860718 (0.860742), sin=0.509094 (0.509041) +0.565487 : cos=0.844238 (0.844328), sin=0.536133 (0.535827) +0.596903 : cos=0.826904 (0.827081), sin=0.562256 (0.562083) +0.628319 : cos=0.809021 (0.809017), sin=0.587708 (0.587785) +0.659734 : cos=0.790344 (0.790155), sin=0.612671 (0.612907) +0.691150 : cos=0.770447 (0.770513), sin=0.637512 (0.637424) +0.722566 : cos=0.750122 (0.750111), sin=0.661499 (0.661312) +0.753982 : cos=0.728882 (0.728969), sin=0.684631 (0.684547) +0.785398 : cos=0.707153 (0.707107), sin=0.707092 (0.707107) +0.816814 : cos=0.684509 (0.684547), sin=0.729004 (0.728969) +0.848230 : cos=0.661499 (0.661312), sin=0.750122 (0.750111) +0.879646 : cos=0.637512 (0.637424), sin=0.770447 (0.770513) +0.911062 : cos=0.612671 (0.612907), sin=0.790344 (0.790155) +0.942478 : cos=0.587708 (0.587785), sin=0.809021 (0.809017) +0.973894 : cos=0.562134 (0.562083), sin=0.827026 (0.827081) +1.005310 : cos=0.535889 (0.535827), sin=0.844360 (0.844328) +1.036726 : cos=0.509094 (0.509041), sin=0.860718 (0.860742) +1.068142 : cos=0.481628 (0.481754), sin=0.876465 (0.876307) +1.099557 : cos=0.453979 (0.453990), sin=0.891052 (0.891007) +1.130973 : cos=0.425903 (0.425779), sin=0.904846 (0.904827) +1.162389 : cos=0.397156 (0.397148), sin=0.917725 (0.917755) +1.193805 : cos=0.367859 (0.368125), sin=0.929810 (0.929776) +1.225221 : cos=0.338562 (0.338738), sin=0.940857 (0.940881) +1.256637 : cos=0.308777 (0.309017), sin=0.951111 (0.951057) +1.288053 : cos=0.278931 (0.278991), sin=0.960205 (0.960294) +1.319469 : cos=0.248657 (0.248690), sin=0.968628 (0.968583) +1.350885 : cos=0.218018 (0.218143), sin=0.975830 (0.975917) +1.382301 : cos=0.187195 (0.187381), sin=0.982422 (0.982287) +1.413717 : cos=0.156311 (0.156434), sin=0.987732 (0.987688) +1.445133 : cos=0.125244 (0.125333), sin=0.992126 (0.992115) +1.476549 : cos=0.094116 (0.094108), sin=0.995422 (0.995562) +1.507964 : cos=0.062988 (0.062791), sin=0.998047 (0.998027) +1.539380 : cos=0.031372 (0.031411), sin=0.999390 (0.999507) + +ARCTAN +0/0: atan=1.742432 (nan), y2 = 0 +500/0: atan=1.571899 (1.570796), y2 = -2 +1000/0: atan=1.571045 (1.570796), y2 = 0 +1500/0: atan=1.571045 (1.570796), y2 = 1 +2000/0: atan=1.571045 (1.570796), y2 = 1 +2500/0: atan=1.570923 (1.570796), y2 = -1 +3000/0: atan=1.570923 (1.570796), y2 = -1 +3500/0: atan=1.571045 (1.570796), y2 = 1 +4000/0: atan=1.570923 (1.570796), y2 = -1 +4500/0: atan=1.570679 (1.570796), y2 = 0 +5000/0: atan=1.570557 (1.570796), y2 = 0 +5500/0: atan=1.570679 (1.570796), y2 = 0 +6000/0: atan=1.570923 (1.570796), y2 = -1 +6500/0: atan=1.570679 (1.570796), y2 = 0 +7000/0: atan=1.570679 (1.570796), y2 = 0 +0/500: atan=-0.000366 (0.000000), y2 = -2 +500/500: atan=0.785645 (0.785398), y2 = 0 +1000/500: atan=1.107178 (1.107149), y2 = -1 +1500/500: atan=1.248535 (1.249046), y2 = 1 +2000/500: atan=1.325928 (1.325818), y2 = -1 +2500/500: atan=1.372925 (1.373401), y2 = 0 +3000/500: atan=1.405518 (1.405648), y2 = 0 +3500/500: atan=1.428711 (1.428899), y2 = 0 +4000/500: atan=1.446655 (1.446441), y2 = -2 +4500/500: atan=1.459961 (1.460139), y2 = 1 +5000/500: atan=1.471313 (1.471128), y2 = -1 +5500/500: atan=1.479980 (1.480136), y2 = 0 +6000/500: atan=1.487671 (1.487655), y2 = 0 +6500/500: atan=1.494019 (1.494024), y2 = -1 +7000/500: atan=1.499634 (1.499489), y2 = -1 +0/1000: atan=0.000977 (0.000000), y2 = 0 +500/1000: atan=0.463989 (0.463648), y2 = -1 +1000/1000: atan=0.785156 (0.785398), y2 = -1 +1500/1000: atan=0.982788 (0.982794), y2 = 0 +2000/1000: atan=1.107178 (1.107149), y2 = -1 +2500/1000: atan=1.190186 (1.190290), y2 = 1 +3000/1000: atan=1.249146 (1.249046), y2 = -2 +3500/1000: atan=1.292358 (1.292497), y2 = -1 +4000/1000: atan=1.325562 (1.325818), y2 = 1 +4500/1000: atan=1.352173 (1.352127), y2 = -1 +5000/1000: atan=1.373169 (1.373401), y2 = 0 +5500/1000: atan=1.390747 (1.390943), y2 = 0 +6000/1000: atan=1.405518 (1.405648), y2 = -1 +6500/1000: atan=1.418091 (1.418147), y2 = -1 +7000/1000: atan=1.428711 (1.428899), y2 = 1 +0/1500: atan=-0.000366 (0.000000), y2 = -1 +500/1500: atan=0.321289 (0.321751), y2 = 1 +1000/1500: atan=0.588379 (0.588003), y2 = 0 +1500/1500: atan=0.785645 (0.785398), y2 = 0 +2000/1500: atan=0.927246 (0.927295), y2 = -1 +2500/1500: atan=1.030518 (1.030377), y2 = 0 +3000/1500: atan=1.107178 (1.107149), y2 = -1 +3500/1500: atan=1.166016 (1.165905), y2 = -1 +4000/1500: atan=1.211914 (1.212026), y2 = 1 +4500/1500: atan=1.249146 (1.249046), y2 = -3 +5000/1500: atan=1.279297 (1.279340), y2 = -1 +5500/1500: atan=1.304443 (1.304544), y2 = 0 +6000/1500: atan=1.325928 (1.325818), y2 = -1 +6500/1500: atan=1.343872 (1.343997), y2 = -1 +7000/1500: atan=1.359497 (1.359703), y2 = 0 +0/2000: atan=-0.000366 (0.000000), y2 = -1 +500/2000: atan=0.245117 (0.244979), y2 = -1 +1000/2000: atan=0.463501 (0.463648), y2 = 1 +1500/2000: atan=0.643677 (0.643501), y2 = -1 +2000/2000: atan=0.785278 (0.785398), y2 = 0 +2500/2000: atan=0.895874 (0.896055), y2 = 0 +3000/2000: atan=0.982788 (0.982794), y2 = 0 +3500/2000: atan=1.051636 (1.051650), y2 = -2 +4000/2000: atan=1.107178 (1.107149), y2 = -2 +4500/2000: atan=1.152466 (1.152572), y2 = -1 +5000/2000: atan=1.190186 (1.190290), y2 = -1 +5500/2000: atan=1.222412 (1.222025), y2 = -4 +6000/2000: atan=1.249146 (1.249046), y2 = -1 +6500/2000: atan=1.272339 (1.272297), y2 = -2 +7000/2000: atan=1.292480 (1.292497), y2 = -1 +0/2500: atan=0.000000 (0.000000), y2 = -1 +500/2500: atan=0.197876 (0.197396), y2 = 0 +1000/2500: atan=0.380493 (0.380506), y2 = -1 +1500/2500: atan=0.540283 (0.540420), y2 = 0 +2000/2500: atan=0.674927 (0.674741), y2 = 0 +2500/2500: atan=0.785522 (0.785398), y2 = -1 +3000/2500: atan=0.875977 (0.876058), y2 = -1 +3500/2500: atan=0.950439 (0.950547), y2 = 0 +4000/2500: atan=1.011963 (1.012197), y2 = 0 +4500/2500: atan=1.063599 (1.063698), y2 = -1 +5000/2500: atan=1.107178 (1.107149), y2 = 0 +5500/2500: atan=1.144409 (1.144169), y2 = -2 +6000/2500: atan=1.176025 (1.176005), y2 = -1 +6500/2500: atan=1.203735 (1.203622), y2 = -1 +7000/2500: atan=1.227539 (1.227772), y2 = 2 +0/3000: atan=0.000000 (0.000000), y2 = -1 +500/3000: atan=0.165283 (0.165149), y2 = 0 +1000/3000: atan=0.321899 (0.321751), y2 = -2 +1500/3000: atan=0.463501 (0.463648), y2 = 1 +2000/3000: atan=0.588013 (0.588003), y2 = 0 +2500/3000: atan=0.694702 (0.694738), y2 = 1 +3000/3000: atan=0.785522 (0.785398), y2 = -1 +3500/3000: atan=0.862305 (0.862170), y2 = -2 +4000/3000: atan=0.927368 (0.927295), y2 = 0 +4500/3000: atan=0.982666 (0.982794), y2 = 0 +5000/3000: atan=1.030396 (1.030377), y2 = -1 +5500/3000: atan=1.071533 (1.071450), y2 = -1 +6000/3000: atan=1.107178 (1.107149), y2 = 0 +6500/3000: atan=1.138428 (1.138389), y2 = 0 +7000/3000: atan=1.165771 (1.165905), y2 = 1 +0/3500: atan=0.000000 (0.000000), y2 = -1 +500/3500: atan=0.142090 (0.141897), y2 = 0 +1000/3500: atan=0.278564 (0.278300), y2 = -1 +1500/3500: atan=0.404907 (0.404892), y2 = -1 +2000/3500: atan=0.519409 (0.519146), y2 = -2 +2500/3500: atan=0.620361 (0.620249), y2 = 0 +3000/3500: atan=0.708374 (0.708626), y2 = 2 +3500/3500: atan=0.785645 (0.785398), y2 = 0 +4000/3500: atan=0.852051 (0.851966), y2 = -1 +4500/3500: atan=0.909546 (0.909753), y2 = 0 +5000/3500: atan=0.960083 (0.960070), y2 = 0 +5500/3500: atan=1.004150 (1.004067), y2 = -1 +6000/3500: atan=1.042969 (1.042722), y2 = -2 +6500/3500: atan=1.076904 (1.076855), y2 = -2 +7000/3500: atan=1.107178 (1.107149), y2 = -1 +0/4000: atan=0.000000 (0.000000), y2 = -1 +500/4000: atan=0.124390 (0.124355), y2 = -2 +1000/4000: atan=0.245117 (0.244979), y2 = -2 +1500/4000: atan=0.358765 (0.358771), y2 = -1 +2000/4000: atan=0.463501 (0.463648), y2 = 1 +2500/4000: atan=0.558716 (0.558599), y2 = -1 +3000/4000: atan=0.643311 (0.643501), y2 = 0 +3500/4000: atan=0.718872 (0.718830), y2 = -1 +4000/4000: atan=0.785278 (0.785398), y2 = 0 +4500/4000: atan=0.844116 (0.844154), y2 = 0 +5000/4000: atan=0.896118 (0.896055), y2 = -1 +5500/4000: atan=0.941528 (0.942000), y2 = 4 +6000/4000: atan=0.982788 (0.982794), y2 = -1 +6500/4000: atan=1.018799 (1.019141), y2 = 2 +7000/4000: atan=1.051636 (1.051650), y2 = 0 +0/4500: atan=0.000122 (0.000000), y2 = 0 +500/4500: atan=0.110718 (0.110657), y2 = -1 +1000/4500: atan=0.218506 (0.218669), y2 = 1 +1500/4500: atan=0.321899 (0.321751), y2 = -3 +2000/4500: atan=0.418457 (0.418224), y2 = -1 +2500/4500: atan=0.507202 (0.507099), y2 = -1 +3000/4500: atan=0.588013 (0.588003), y2 = 0 +3500/4500: atan=0.661133 (0.661043), y2 = -1 +4000/4500: atan=0.726807 (0.726642), y2 = -1 +4500/4500: atan=0.785278 (0.785398), y2 = 0 +5000/4500: atan=0.838013 (0.837981), y2 = 0 +5500/4500: atan=0.885010 (0.885067), y2 = 0 +6000/4500: atan=0.927368 (0.927295), y2 = -1 +6500/4500: atan=0.965088 (0.965252), y2 = 0 +7000/4500: atan=0.999146 (0.999459), y2 = 0 +0/5000: atan=0.000122 (0.000000), y2 = 0 +500/5000: atan=0.100098 (0.099669), y2 = -1 +1000/5000: atan=0.197510 (0.197396), y2 = 0 +1500/5000: atan=0.291504 (0.291457), y2 = -1 +2000/5000: atan=0.380493 (0.380506), y2 = 0 +2500/5000: atan=0.463501 (0.463648), y2 = 0 +3000/5000: atan=0.540527 (0.540420), y2 = -1 +3500/5000: atan=0.610596 (0.610726), y2 = 0 +4000/5000: atan=0.674805 (0.674741), y2 = -1 +4500/5000: atan=0.732666 (0.732815), y2 = 1 +5000/5000: atan=0.785278 (0.785398), y2 = 0 +5500/5000: atan=0.833374 (0.832981), y2 = -6 +6000/5000: atan=0.875977 (0.876058), y2 = 0 +6500/5000: atan=0.915161 (0.915101), y2 = 0 +7000/5000: atan=0.950684 (0.950547), y2 = -2 +0/5500: atan=0.000000 (0.000000), y2 = -1 +500/5500: atan=0.090698 (0.090660), y2 = 0 +1000/5500: atan=0.179932 (0.179853), y2 = 0 +1500/5500: atan=0.266357 (0.266252), y2 = -1 +2000/5500: atan=0.349243 (0.348771), y2 = -4 +2500/5500: atan=0.426270 (0.426627), y2 = 2 +3000/5500: atan=0.499390 (0.499347), y2 = -1 +3500/5500: atan=0.566772 (0.566729), y2 = -1 +4000/5500: atan=0.629150 (0.628796), y2 = -4 +4500/5500: atan=0.685669 (0.685730), y2 = 0 +5000/5500: atan=0.738159 (0.737815), y2 = -6 +5500/5500: atan=0.785156 (0.785398), y2 = 0 +6000/5500: atan=0.828735 (0.828849), y2 = -1 +6500/5500: atan=0.868408 (0.868539), y2 = 0 +7000/5500: atan=0.904785 (0.904827), y2 = -1 +0/6000: atan=0.000000 (0.000000), y2 = -1 +500/6000: atan=0.083008 (0.083141), y2 = 0 +1000/6000: atan=0.165283 (0.165149), y2 = -1 +1500/6000: atan=0.244751 (0.244979), y2 = 0 +2000/6000: atan=0.321899 (0.321751), y2 = -1 +2500/6000: atan=0.394775 (0.394791), y2 = -1 +3000/6000: atan=0.463501 (0.463648), y2 = 0 +3500/6000: atan=0.527710 (0.528074), y2 = 2 +4000/6000: atan=0.588013 (0.588003), y2 = -1 +4500/6000: atan=0.643433 (0.643501), y2 = -1 +5000/6000: atan=0.694702 (0.694738), y2 = -1 +5500/6000: atan=0.742065 (0.741947), y2 = -1 +6000/6000: atan=0.785278 (0.785398), y2 = 1 +6500/6000: atan=0.825562 (0.825377), y2 = -1 +7000/6000: atan=0.862305 (0.862170), y2 = -3 +0/6500: atan=0.000000 (0.000000), y2 = 0 +500/6500: atan=0.076904 (0.076772), y2 = -1 +1000/6500: atan=0.152588 (0.152649), y2 = 0 +1500/6500: atan=0.227051 (0.226799), y2 = -1 +2000/6500: atan=0.298340 (0.298499), y2 = 2 +2500/6500: atan=0.367065 (0.367174), y2 = -1 +3000/6500: atan=0.432251 (0.432408), y2 = 0 +3500/6500: atan=0.494141 (0.493941), y2 = -2 +4000/6500: atan=0.551880 (0.551655), y2 = -2 +4500/6500: atan=0.605591 (0.605545), y2 = 0 +5000/6500: atan=0.655518 (0.655696), y2 = 0 +5500/6500: atan=0.702271 (0.702257), y2 = 0 +6000/6500: atan=0.745117 (0.745419), y2 = 1 +6500/6500: atan=0.785278 (0.785398), y2 = 0 +7000/6500: atan=0.822510 (0.822418), y2 = -1 +0/7000: atan=0.000000 (0.000000), y2 = 0 +500/7000: atan=0.071045 (0.071307), y2 = 1 +1000/7000: atan=0.141968 (0.141897), y2 = -1 +1500/7000: atan=0.211182 (0.211093), y2 = 0 +2000/7000: atan=0.278320 (0.278300), y2 = -1 +2500/7000: atan=0.343140 (0.343024), y2 = -1 +3000/7000: atan=0.404907 (0.404892), y2 = -1 +3500/7000: atan=0.463501 (0.463648), y2 = 0 +4000/7000: atan=0.519043 (0.519146), y2 = 0 +4500/7000: atan=0.571533 (0.571337), y2 = 0 +5000/7000: atan=0.620239 (0.620249), y2 = -2 +5500/7000: atan=0.666016 (0.665969), y2 = -1 +6000/7000: atan=0.708862 (0.708626), y2 = -3 +6500/7000: atan=0.748169 (0.748378), y2 = 2 +7000/7000: atan=0.785278 (0.785398), y2 = 0 + +SQUARE ROOT +100: sqrt=0.099860 (0.078125) +200: sqrt=0.118432 (0.110485) +300: sqrt=0.137151 (0.135316) +400: sqrt=0.155649 (0.156250) +500: sqrt=0.174221 (0.174693) +600: sqrt=0.190803 (0.191366) +700: sqrt=0.206205 (0.206699) +800: sqrt=0.220576 (0.220971) +900: sqrt=0.233916 (0.234375) +1000: sqrt=0.246886 (0.247053) +1100: sqrt=0.258825 (0.259111) +1200: sqrt=0.270175 (0.270633) +1300: sqrt=0.281303 (0.281684) +1400: sqrt=0.292063 (0.292317) +1500: sqrt=0.302307 (0.302577) +1600: sqrt=0.312109 (0.312500) +1700: sqrt=0.321984 (0.322118) +1800: sqrt=0.330975 (0.331456) +1900: sqrt=0.340261 (0.340539) +2000: sqrt=0.349178 (0.349386) +2100: sqrt=0.357948 (0.358014) +2200: sqrt=0.366350 (0.366439) +2300: sqrt=0.374383 (0.374674) +2400: sqrt=0.382563 (0.382733) +2500: sqrt=0.390154 (0.390625) +2600: sqrt=0.398187 (0.398361) +2700: sqrt=0.405925 (0.405949) +2800: sqrt=0.413295 (0.413399) +2900: sqrt=0.420812 (0.420716) +3000: sqrt=0.427592 (0.427908) +3100: sqrt=0.434741 (0.434982) +3200: sqrt=0.441669 (0.441942) +3300: sqrt=0.448670 (0.448794) +3400: sqrt=0.455376 (0.455543) +3500: sqrt=0.462230 (0.462194) +3600: sqrt=0.468421 (0.468750) +3700: sqrt=0.475054 (0.475216) +3800: sqrt=0.481244 (0.481595) +3900: sqrt=0.487656 (0.487890) +4000: sqrt=0.493699 (0.494106) +4100: sqrt=0.499595 (0.500244) +4200: sqrt=0.505638 (0.506308) +4300: sqrt=0.511607 (0.512300) +4400: sqrt=0.517724 (0.518223) +4500: sqrt=0.523694 (0.524078) +4600: sqrt=0.529663 (0.529870) +4700: sqrt=0.535191 (0.535598) +4800: sqrt=0.540792 (0.541266) +4900: sqrt=0.546761 (0.546875) +5000: sqrt=0.552288 (0.552427) +5100: sqrt=0.557668 (0.557924) +5200: sqrt=0.563122 (0.563367) +5300: sqrt=0.568576 (0.568759) +5400: sqrt=0.573734 (0.574099) +5500: sqrt=0.578893 (0.579391) +5600: sqrt=0.584199 (0.584634) +5700: sqrt=0.589727 (0.589831) +5800: sqrt=0.594812 (0.594982) +5900: sqrt=0.599676 (0.600090) +6000: sqrt=0.604908 (0.605154) +6100: sqrt=0.610067 (0.610176) +6200: sqrt=0.614636 (0.615157) +6300: sqrt=0.619648 (0.620098) +6400: sqrt=0.624659 (0.625000) +6500: sqrt=0.629155 (0.629864) +6600: sqrt=0.634387 (0.634691) +6700: sqrt=0.639251 (0.639481) +6800: sqrt=0.644042 (0.644235) +6900: sqrt=0.648832 (0.648955) +7000: sqrt=0.653475 (0.653641) + +RECIPROCAL +32000: 1/x=0.512085 (0.512000) +31750: 1/x=0.515991 (0.516031) +31500: 1/x=0.520142 (0.520127) +31250: 1/x=0.524292 (0.524288) +31000: 1/x=0.528442 (0.528516) +30750: 1/x=0.532837 (0.532813) +30500: 1/x=0.537231 (0.537180) +30250: 1/x=0.541626 (0.541620) +30000: 1/x=0.546265 (0.546133) +29750: 1/x=0.550659 (0.550723) +29500: 1/x=0.555298 (0.555390) +29250: 1/x=0.560181 (0.560137) +29000: 1/x=0.564819 (0.564966) +28750: 1/x=0.569946 (0.569878) +28500: 1/x=0.574829 (0.574877) +28250: 1/x=0.579956 (0.579965) +28000: 1/x=0.585083 (0.585143) +27750: 1/x=0.590454 (0.590414) +27500: 1/x=0.595825 (0.595782) +27250: 1/x=0.601440 (0.601248) +27000: 1/x=0.606812 (0.606815) +26750: 1/x=0.612427 (0.612486) +26500: 1/x=0.618286 (0.618264) +26250: 1/x=0.624146 (0.624152) +26000: 1/x=0.630249 (0.630154) +25750: 1/x=0.636353 (0.636272) +25500: 1/x=0.642456 (0.642510) +25250: 1/x=0.648804 (0.648871) +25000: 1/x=0.655396 (0.655360) +24750: 1/x=0.661987 (0.661980) +24500: 1/x=0.668823 (0.668735) +24250: 1/x=0.675659 (0.675629) +24000: 1/x=0.682739 (0.682667) +23750: 1/x=0.689819 (0.689853) +23500: 1/x=0.697144 (0.697191) +23250: 1/x=0.704712 (0.704688) +23000: 1/x=0.712524 (0.712348) +22750: 1/x=0.720093 (0.720176) +22500: 1/x=0.728149 (0.728178) +22250: 1/x=0.736450 (0.736360) +22000: 1/x=0.744751 (0.744727) +21750: 1/x=0.753296 (0.753287) +21500: 1/x=0.761841 (0.762047) +21250: 1/x=0.771118 (0.771012) +21000: 1/x=0.780151 (0.780190) +20750: 1/x=0.789673 (0.789590) +20500: 1/x=0.799194 (0.799220) +20250: 1/x=0.808960 (0.809086) +20000: 1/x=0.819214 (0.819200) +19750: 1/x=0.829712 (0.829570) +19500: 1/x=0.840210 (0.840205) +19250: 1/x=0.851440 (0.851117) +19000: 1/x=0.862427 (0.862316) +18750: 1/x=0.874146 (0.873813) +18500: 1/x=0.885620 (0.885622) +18250: 1/x=0.898071 (0.897753) +18000: 1/x=0.910278 (0.910222) +17750: 1/x=0.923218 (0.923042) +17500: 1/x=0.936401 (0.936229) +17250: 1/x=0.949829 (0.949797) +17000: 1/x=0.963989 (0.963765) +16750: 1/x=0.978394 (0.978149) +16500: 1/x=0.993286 (0.992970) +16250: 1/x=1.007935 (1.008246) +16000: 1/x=1.024048 (1.024000) +15750: 1/x=1.040161 (1.040254) +15500: 1/x=1.057007 (1.057032) +15250: 1/x=1.074341 (1.074361) +15000: 1/x=1.092407 (1.092267) +14750: 1/x=1.110718 (1.110780) +14500: 1/x=1.129761 (1.129931) +14250: 1/x=1.149780 (1.149754) +14000: 1/x=1.170288 (1.170286) +13750: 1/x=1.191528 (1.191564) +13500: 1/x=1.213745 (1.213630) +13250: 1/x=1.236450 (1.236528) +13000: 1/x=1.260376 (1.260308) +12750: 1/x=1.284790 (1.285020) +12500: 1/x=1.310913 (1.310720) +12250: 1/x=1.337524 (1.337469) +12000: 1/x=1.365356 (1.365333) +11750: 1/x=1.394409 (1.394383) +11500: 1/x=1.424927 (1.424696) +11250: 1/x=1.456421 (1.456356) +11000: 1/x=1.489624 (1.489455) +10750: 1/x=1.523804 (1.524093) +10500: 1/x=1.560425 (1.560381) +10250: 1/x=1.598511 (1.598439) +10000: 1/x=1.638550 (1.638400) +9750: 1/x=1.680298 (1.680410) +9500: 1/x=1.724731 (1.724632) +9250: 1/x=1.771362 (1.771243) +9000: 1/x=1.820435 (1.820444) +8750: 1/x=1.872681 (1.872457) +8500: 1/x=1.927856 (1.927529) +8250: 1/x=1.986450 (1.985939) + +INVERSE SQUARE ROOT +4000: sqrt=0.493699 (0.494106) +4000: 1/sqrt(x)=1.999878 (2.023858) +4200: sqrt=0.505638 (0.506308) +4200: 1/sqrt(x)=1.978149 (1.975083) +4400: sqrt=0.517724 (0.518223) +4400: 1/sqrt(x)=1.931763 (1.929673) +4600: sqrt=0.529663 (0.529870) +4600: 1/sqrt(x)=1.888306 (1.887257) +4800: sqrt=0.540792 (0.541266) +4800: 1/sqrt(x)=1.849243 (1.847521) +5000: sqrt=0.552288 (0.552427) +5000: 1/sqrt(x)=1.810913 (1.810193) +5200: sqrt=0.563122 (0.563367) +5200: 1/sqrt(x)=1.775757 (1.775041) +5400: sqrt=0.573734 (0.574099) +5400: 1/sqrt(x)=1.743286 (1.741859) +5600: sqrt=0.584199 (0.584634) +5600: 1/sqrt(x)=1.712036 (1.710472) +5800: sqrt=0.594812 (0.594982) +5800: 1/sqrt(x)=1.681519 (1.680722) +6000: sqrt=0.604908 (0.605154) +6000: 1/sqrt(x)=1.653198 (1.652473) +6200: sqrt=0.614636 (0.615157) +6200: 1/sqrt(x)=1.626831 (1.625602) +6400: sqrt=0.624659 (0.625000) +6400: 1/sqrt(x)=1.601196 (1.600000) +6600: sqrt=0.634387 (0.634691) +6600: 1/sqrt(x)=1.576538 (1.575571) +6800: sqrt=0.644042 (0.644235) +6800: 1/sqrt(x)=1.552856 (1.552228) +7000: sqrt=0.653475 (0.653641) +7000: 1/sqrt(x)=1.530640 (1.529893) +7200: sqrt=0.662687 (0.662913) +7200: 1/sqrt(x)=1.508911 (1.508494) +7400: sqrt=0.671531 (0.672057) +7400: 1/sqrt(x)=1.489380 (1.487970) +7600: sqrt=0.680890 (0.681078) +7600: 1/sqrt(x)=1.468872 (1.468261) +7800: sqrt=0.689734 (0.689981) +7800: 1/sqrt(x)=1.450073 (1.449315) +8000: sqrt=0.698430 (0.698771) +8000: 1/sqrt(x)=1.431763 (1.431084) +8200: sqrt=0.707200 (0.707452) +8200: 1/sqrt(x)=1.414185 (1.413524) +8400: sqrt=0.715676 (0.716027) +8400: 1/sqrt(x)=1.397583 (1.396594) +8600: sqrt=0.724225 (0.724501) +8600: 1/sqrt(x)=1.380737 (1.380259) +8800: sqrt=0.732552 (0.732877) +8800: 1/sqrt(x)=1.365112 (1.364485) +9000: sqrt=0.740880 (0.741159) +9000: 1/sqrt(x)=1.349731 (1.349238) +9200: sqrt=0.749061 (0.749349) +9200: 1/sqrt(x)=1.335327 (1.334492) +9400: sqrt=0.757462 (0.757450) +9400: 1/sqrt(x)=1.320190 (1.320219) +9600: sqrt=0.765127 (0.765466) +9600: 1/sqrt(x)=1.307251 (1.306395) +9800: sqrt=0.772939 (0.773398) +9800: 1/sqrt(x)=1.293823 (1.292995) +10000: sqrt=0.781193 (0.781250) +10000: 1/sqrt(x)=1.280151 (1.280000) +10200: sqrt=0.788931 (0.789024) +10200: 1/sqrt(x)=1.267456 (1.267389) +10400: sqrt=0.796743 (0.796722) +10400: 1/sqrt(x)=1.255005 (1.255143) +10600: sqrt=0.804113 (0.804346) +10600: 1/sqrt(x)=1.243774 (1.243246) +10800: sqrt=0.811630 (0.811899) +10800: 1/sqrt(x)=1.232300 (1.231681) +11000: sqrt=0.818926 (0.819382) +11000: 1/sqrt(x)=1.221069 (1.220432) +11200: sqrt=0.826590 (0.826797) +11200: 1/sqrt(x)=1.209839 (1.209486) +11400: sqrt=0.834034 (0.834147) +11400: 1/sqrt(x)=1.199097 (1.198830) +11600: sqrt=0.841256 (0.841432) +11600: 1/sqrt(x)=1.188599 (1.188450) +11800: sqrt=0.848331 (0.848655) +11800: 1/sqrt(x)=1.178833 (1.178336) +12000: sqrt=0.855627 (0.855816) +12000: 1/sqrt(x)=1.168823 (1.168475) +12200: sqrt=0.862628 (0.862919) +12200: 1/sqrt(x)=1.159302 (1.158858) +12400: sqrt=0.869851 (0.869963) +12400: 1/sqrt(x)=1.149536 (1.149474) +12600: sqrt=0.876778 (0.876951) +12600: 1/sqrt(x)=1.140503 (1.140315) +12800: sqrt=0.883337 (0.883883) +12800: 1/sqrt(x)=1.132202 (1.131371) +13000: sqrt=0.890633 (0.890762) +13000: 1/sqrt(x)=1.122925 (1.122634) +13200: sqrt=0.897561 (0.897588) +13200: 1/sqrt(x)=1.114380 (1.114097) +13400: sqrt=0.904267 (0.904362) +13400: 1/sqrt(x)=1.105835 (1.105752) +13600: sqrt=0.910900 (0.911086) +13600: 1/sqrt(x)=1.097778 (1.097591) +13800: sqrt=0.917459 (0.917761) +13800: 1/sqrt(x)=1.089966 (1.089608) +14000: sqrt=0.924166 (0.924387) +14000: 1/sqrt(x)=1.082153 (1.081797) +14200: sqrt=0.930356 (0.930967) +14200: 1/sqrt(x)=1.074829 (1.074152) +14400: sqrt=0.937063 (0.937500) +14400: 1/sqrt(x)=1.067017 (1.066667) +14600: sqrt=0.943622 (0.943988) +14600: 1/sqrt(x)=1.059937 (1.059336) +14800: sqrt=0.950107 (0.950432) +14800: 1/sqrt(x)=1.052612 (1.052154) +15000: sqrt=0.956371 (0.956832) +15000: 1/sqrt(x)=1.045776 (1.045116) +15200: sqrt=0.963004 (0.963190) +15200: 1/sqrt(x)=1.038696 (1.038217) +15400: sqrt=0.969342 (0.969506) +15400: 1/sqrt(x)=1.031616 (1.031453) +15600: sqrt=0.975533 (0.975781) +15600: 1/sqrt(x)=1.025024 (1.024820) +15800: sqrt=0.981944 (0.982016) +15800: 1/sqrt(x)=1.018433 (1.018313) +16000: sqrt=0.987766 (0.988212) +16000: 1/sqrt(x)=1.012085 (1.011929) +16200: sqrt=0.993957 (0.994369) +16200: 1/sqrt(x)=1.005981 (1.005663) +16400: sqrt=1.000295 (1.000488) +16400: 1/sqrt(x)=0.999878 (0.999512) +16600: sqrt=1.006338 (1.006570) +16600: 1/sqrt(x)=0.994019 (0.993473) +16800: sqrt=1.012529 (1.012616) +16800: 1/sqrt(x)=0.987671 (0.987541) +17000: sqrt=1.018056 (1.018625) +17000: 1/sqrt(x)=0.982544 (0.981715) +17200: sqrt=1.024468 (1.024600) +17200: 1/sqrt(x)=0.976196 (0.975991) +17400: sqrt=1.030364 (1.030540) +17400: 1/sqrt(x)=0.970581 (0.970365) +17600: sqrt=1.036186 (1.036445) +17600: 1/sqrt(x)=0.965210 (0.964836) +17800: sqrt=1.042155 (1.042318) +17800: 1/sqrt(x)=0.959595 (0.959401) +18000: sqrt=1.048051 (1.048157) +18000: 1/sqrt(x)=0.954224 (0.954056) +18200: sqrt=1.053431 (1.053964) +18200: 1/sqrt(x)=0.949341 (0.948799) +18400: sqrt=1.059400 (1.059739) +18400: 1/sqrt(x)=0.943970 (0.943629) +18600: sqrt=1.065149 (1.065483) +18600: 1/sqrt(x)=0.938843 (0.938542) +18800: sqrt=1.070897 (1.071196) +18800: 1/sqrt(x)=0.933960 (0.933536) +19000: sqrt=1.076498 (1.076879) +19000: 1/sqrt(x)=0.929077 (0.928610) +19200: sqrt=1.082468 (1.082532) +19200: 1/sqrt(x)=0.923950 (0.923760) +19400: sqrt=1.087848 (1.088155) +19400: 1/sqrt(x)=0.919556 (0.918986) +19600: sqrt=1.093375 (1.093750) +19600: 1/sqrt(x)=0.914673 (0.914286) +19800: sqrt=1.099123 (1.099316) +19800: 1/sqrt(x)=0.909790 (0.909656) +20000: sqrt=1.104503 (1.104854) +20000: 1/sqrt(x)=0.905396 (0.905097) +20200: sqrt=1.110104 (1.110365) +20200: 1/sqrt(x)=0.901001 (0.900605) +20400: sqrt=1.115779 (1.115848) +20400: 1/sqrt(x)=0.896362 (0.896179) +20600: sqrt=1.120938 (1.121305) +20600: 1/sqrt(x)=0.891968 (0.891818) +20800: sqrt=1.126391 (1.126735) +20800: 1/sqrt(x)=0.887817 (0.887520) +21000: sqrt=1.131771 (1.132139) +21000: 1/sqrt(x)=0.883667 (0.883284) +21200: sqrt=1.137077 (1.137517) +21200: 1/sqrt(x)=0.879517 (0.879108) +21400: sqrt=1.142678 (1.142870) +21400: 1/sqrt(x)=0.875122 (0.874990) +21600: sqrt=1.148058 (1.148198) +21600: 1/sqrt(x)=0.871216 (0.870930) +21800: sqrt=1.153438 (1.153502) +21800: 1/sqrt(x)=0.867065 (0.866925) +22000: sqrt=1.158302 (1.158781) +22000: 1/sqrt(x)=0.863403 (0.862976) +22200: sqrt=1.163830 (1.164036) +22200: 1/sqrt(x)=0.859253 (0.859080) +22400: sqrt=1.168988 (1.169268) +22400: 1/sqrt(x)=0.855591 (0.855236) +22600: sqrt=1.174295 (1.174476) +22600: 1/sqrt(x)=0.851685 (0.851443) +22800: sqrt=1.179527 (1.179662) +22800: 1/sqrt(x)=0.847778 (0.847701) +23000: sqrt=1.184539 (1.184824) +23000: 1/sqrt(x)=0.844116 (0.844007) +23200: sqrt=1.189919 (1.189965) +23200: 1/sqrt(x)=0.840454 (0.840361) +23400: sqrt=1.194709 (1.195083) +23400: 1/sqrt(x)=0.837036 (0.836762) +23600: sqrt=1.200089 (1.200179) +23600: 1/sqrt(x)=0.833374 (0.833209) +23800: sqrt=1.204953 (1.205254) +23800: 1/sqrt(x)=0.829956 (0.829701) +24000: sqrt=1.209891 (1.210307) +24000: 1/sqrt(x)=0.826538 (0.826236) +24200: sqrt=1.215049 (1.215340) +24200: 1/sqrt(x)=0.823120 (0.822815) +24400: sqrt=1.219987 (1.220352) +24400: 1/sqrt(x)=0.819702 (0.819436) +24600: sqrt=1.225146 (1.225343) +24600: 1/sqrt(x)=0.816284 (0.816098) +24800: sqrt=1.229936 (1.230314) +24800: 1/sqrt(x)=0.812866 (0.812801) +25000: sqrt=1.235021 (1.235265) +25000: 1/sqrt(x)=0.809692 (0.809543) +25200: sqrt=1.239885 (1.240196) +25200: 1/sqrt(x)=0.806519 (0.806324) +25400: sqrt=1.244897 (1.245108) +25400: 1/sqrt(x)=0.803345 (0.803143) +25600: sqrt=1.249687 (1.250000) +25600: 1/sqrt(x)=0.800415 (0.800000) +25800: sqrt=1.254699 (1.254873) +25800: 1/sqrt(x)=0.796997 (0.796893) +26000: sqrt=1.259563 (1.259728) +26000: 1/sqrt(x)=0.794067 (0.793822) +26200: sqrt=1.264500 (1.264564) +26200: 1/sqrt(x)=0.790894 (0.790787) +26400: sqrt=1.268996 (1.269381) +26400: 1/sqrt(x)=0.788208 (0.787786) +26600: sqrt=1.273860 (1.274180) +26600: 1/sqrt(x)=0.785034 (0.784818) +26800: sqrt=1.278577 (1.278961) +26800: 1/sqrt(x)=0.782104 (0.781884) +27000: sqrt=1.283588 (1.283725) +27000: 1/sqrt(x)=0.779175 (0.778983) +27200: sqrt=1.288157 (1.288471) +27200: 1/sqrt(x)=0.776245 (0.776114) +27400: sqrt=1.293021 (1.293199) +27400: 1/sqrt(x)=0.773560 (0.773276) +27600: sqrt=1.297517 (1.297910) +27600: 1/sqrt(x)=0.770630 (0.770469) +27800: sqrt=1.302454 (1.302604) +27800: 1/sqrt(x)=0.767700 (0.767693) +28000: sqrt=1.307171 (1.307281) +28000: 1/sqrt(x)=0.765015 (0.764946) +28200: sqrt=1.311740 (1.311942) +28200: 1/sqrt(x)=0.762329 (0.762229) +28400: sqrt=1.316383 (1.316586) +28400: 1/sqrt(x)=0.759644 (0.759540) +28600: sqrt=1.321026 (1.321214) +28600: 1/sqrt(x)=0.756958 (0.756880)
trunk/sw/cordic-flp.txt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sw/cordic.nac =================================================================== --- trunk/sw/cordic.nac (nonexistent) +++ trunk/sw/cordic.nac (revision 2) @@ -0,0 +1,128 @@ +// +// Filename: cordic.nac +// Purpose : N-address code (NAC) implementation for a fixed-point universal +// CORDIC supporting all directions (ROTATION, VECTORING) and +// operation modes (CIRCULAR, LINEAR, HYPERBOLIC). +// The arithmetic representation used is signed fixed-point +// (Q2.14S). The implementation is based partly on the following +// sources (as references): +// [1] The simple fixed-point CORDIC tools from: +// http://www.dcs.gla.ac.uk/~jhw/cordic/ +// [2] Jorg Arndt, Matters Computational (free ebook): +// http://www.jjj.de/fxt/ +// [3] Jean-Michel Muller, Elementary Functions: Algorithms and +// Implementation, Second Edition, Birkhauser, 2006. +// [4] Uwe Meyer-Baese, Digital Signal Processing with Field +// Programmable Gate Arrays, Third Edition, Springer, 2007. +// Author : Nikolaos Kavvadias (C) 2010 +// Date : 01-Nov-2010 +// Revision: 0.3.0 (31/10/10) +// Initial version. +// 0.3.1 (01/11/10) +// Some hand optimizations. +// 0.3.2 (01/11/10) +// Interface changes, implementation of a unified CORDIC (can +// compute any function). +// 0.3.3 (08/11/10) +// Replaced the three coefficient LUTs with a single one. +// + +constant s16 0, 1, 2, 4, 14, 28, 15; +globalvar s16 cordic_tab[42]={65535,8999,4184,2058,1025,512,256,128,64,32,16,8,4,2,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,12867,7596,4013,2037,1022,511,255,127,63,31,15,7,3,1}; + +procedure cordic (in s16 direction, in s16 mode, in s16 xin, in s16 yin, in s16 zin, out s16 xout, out s16 yout, out s16 zout) +{ + localvar s16 k, d; + localvar s16 x, y, z; + localvar s16 xbyk, ybyk, i, tabval; + localvar s16 t0, t1, t2, t3, t4, t5, t6, t7; + localvar s16 zero, one, ldirection, lmode, offset; + +S_1: + zero <= ldc 0; + one <= ldc 1; + x <= mov xin; + y <= mov yin; + z <= mov zin; + ldirection <= mov direction; + lmode <= mov mode; +// kstart = ((mode == HYPERBOLIC) ? 1 : 0); + k <= muxeq lmode, 2, one, zero; +// offset = ((mode == HYPERBOLIC) ? 0 : ((mode == LINEAR) ? 14 : 28)); + t0 <= muxeq lmode, 1, 14, 28; + offset <= muxeq lmode, 2, 0, t0; + i <= ldc 4; + S_2 <= jmpun; + +// for (k = kstart; k < CORDIC_NTAB; ++k) { +S_2: + S_3, S_EXIT <= jmplt k, 14; + +//again: +S_3: + // precompute invariants: y>>k, -(y>>k), x>>k, cordic_ctab[k] + t0 <= shr y, k; + t1 <= neg t0; +// xbyk = (x>>k); + xbyk <= shr x, k; +// ybyk = ((mode == HYPERBOLIC) ? -(y>>k) : ((mode == LINEAR) ? 0 : (y>>k))); + t5 <= muxeq lmode, 1, zero, t0; + ybyk <= muxeq lmode, 2, t1, t5; +// tabval = ((mode == HYPERBOLIC) ? cordic_htab[k] : ((mode == LINEAR) ? cordic_btab[k] : cordic_ctab[k])); + t2 <= add k, offset; + tabval <= load cordic_tab, t2; +// if (direction == ROTATION) { +// d = ((z>=0) ? 0 : 1); + t7 <= shr z, 15; + t1 <= muxeq t7, 0, zero, one; +// } else { // VECTORING +// d = ((y<0) ? 0 : 1); +// } + t2 <= shr y, 15; + t3 <= muxne t2, 0, zero, one; + d <= muxeq ldirection, 0, t1, t3; + S_4, S_5 <= jmpeq d, 0; + +S_4: +// x = x - ybyk; + x <= sub x, ybyk; +// y = y + xbyk; + y <= add y, xbyk; +// z = z - tabval; + z <= sub z, tabval; + S_6 <= jmpun; + +S_5: +// x = x + ybyk; + x <= add x, ybyk; +// y = y - xbyk; + y <= sub y, xbyk; +// z = z + tabval; + z <= add z, tabval; + S_6 <= jmpun; + +S_6: +// if ((k == i) && (mode == HYPERBOLIC)) { + t0 <= seteq k, i; + t1 <= seteq lmode, 2; + t2 <= and t0, t1; + S_7, S_8 <= jmpeq t2, 1; + +S_7: +// i = ((i << 1) + i) + 1; +// goto again; +// } + t3 <= shl i, 1; + t4 <= add t3, i; + i <= add t4, 1; + S_3 <= jmpun; + +S_8: + k <= add k, 1; + S_2 <= jmpun; + +S_EXIT: + xout <= mov x; + yout <= mov y; + zout <= mov z; +}
trunk/sw/cordic.nac Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sw/cordic.c =================================================================== --- trunk/sw/cordic.c (nonexistent) +++ trunk/sw/cordic.c (revision 2) @@ -0,0 +1,219 @@ +// +// Filename: cordic.c +// Purpose : N-address code (NAC) implementation for a fixed-point universal +// CORDIC. The arithmetic representation used is signed fixed-point +// (Q2.14S). The implementation has been generated by a modified +// version of the simple fixed-point CORDIC tools from: +// http://www.dcs.gla.ac.uk/~jhw/cordic/ +// Author : Nikolaos Kavvadias (C) 2010 +// Date : 31-Oct-2010 +// Revision: 0.3.0 (31/10/10) +// Initial version. +// 0.3.1 (08/11/10) +// Description of the universal CORDIC algorithm is finalized. +// +#include +#include + +#define ROTATION 0 +#define VECTORING 1 +#define CIRCULAR 0 +#define LINEAR 1 +#define HYPERBOLIC 2 + +typedef short int integer; +//typedef integer int; + +//Cordic in 16 bit signed fixed point math +//Function is valid for arguments in range -pi/2 -- pi/2 +//for values pi/2--pi: value = half_pi-(theta-half_pi) and similarly for values -pi---pi/2 +// +// 1.0 = 16384 +// 1/k = 0.6072529350088812561694 +// pi = 3.1415926536897932384626 +//Constants +#define MY_PI 3.1415926536897932384626 +// Q2.14S +#define cordic_1K 9949 +#define cordic_1Kp 19783 +#define half_pi 25735 +#define MUL 16384.000000 +#define CORDIC_NTAB 14 +integer cordic_tab[3*CORDIC_NTAB] = { + 65535 /* NOT USED */, 8999, 4184, 2058, 1025, 512, 256, 128, 64, 32, 16, 8, 4, 2, /* HYPERBOLIC */ + 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, /* LINEAR */ + 12867, 7596, 4013, 2037, 1022, 511, 255, 127, 63, 31, 15, 7, 3, 1 /* CIRCULAR */ +}; +// for convergence in hyperbolic mode, steps 4 and 13 must be repeated +integer cordic_hyp_steps[] = { +// 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 + 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13 +}; +integer gdirection; // {0: ROTATION, 1: VECTORING} +integer gmode; // {0: CIRCULAR, 1: LINEAR, 2: HYPERBOLIC} + +void cordicopt(integer direction, integer mode, integer xin, integer yin, integer zin, integer *xout, integer *yout, integer *zout) +{ + integer k, kk, d, x1, x2, y1, y2, z1, z2; + integer x, y, z; + integer kstart, kfinal, xbyk, ybyk, tabval; + integer offset; + + x = xin; + y = yin; + z = zin; + offset = ((mode == HYPERBOLIC) ? 0 : ((mode == LINEAR) ? 14 : 28)); + kfinal = ((mode != HYPERBOLIC) ? CORDIC_NTAB : CORDIC_NTAB+1); + for (k = 0; k < kfinal; k++) + { + d = ((direction == ROTATION) ? ((z>=0) ? 0 : 1) : ((y<0) ? 0 : 1)); + kk = ((mode != HYPERBOLIC) ? k : cordic_hyp_steps[k]); + xbyk = (x>>kk); + ybyk = ((mode == HYPERBOLIC) ? -(y>>kk) : ((mode == LINEAR) ? 0 : (y>>kk))); + tabval = cordic_tab[kk+offset]; + x1 = x - ybyk; + x2 = x + ybyk; + y1 = y + xbyk; + y2 = y - xbyk; + z1 = z - tabval; + z2 = z + tabval; + x = ((d == 0) ? x1 : x2); + y = ((d == 0) ? y1 : y2); + z = ((d == 0) ? z1 : z2); + } + *xout = x; + *yout = y; + *zout = z; +} + +int main(int argc, char **argv) +{ + double p; + integer x1, y1, z1, x2, y2, z2, i, temp; + integer w1; + + // ROTATION, SIN/COS +#ifndef DATAGEN + printf("SINE, COSINE\n"); +#endif + gdirection = ROTATION; gmode = CIRCULAR; + x1 = cordic_1K; y1 = 0; + for (i = 0; i < 50; i++) + { + p = (i/50.0)*MY_PI/2; + z1 = (integer)(p * MUL); + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%f : cos=%f (%f), sin=%f (%f)\n", p, x2/MUL, cos(p), y2/MUL, sin(p)); +#endif + } + + // VECTORING, ATAN +#ifndef DATAGEN + printf("\nARCTAN\n"); +#endif + gdirection = VECTORING; gmode = CIRCULAR; + z1 = 0; + for (x1 = 0; x1 <= 7000; x1+=500) + { + for (y1 = 0; y1 <= 7000; y1+=500) + { + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%d/%d: atan=%f (%f), y2 = %d\n", y1, x1, z2/MUL, atan((double)y1/x1), y2); +#endif + } + } + + // HYPERBOLIC, VECTORING, SQUARE ROOT +#ifndef DATAGEN + printf("\nSQUARE ROOT\n"); +#endif + gdirection = VECTORING; gmode = HYPERBOLIC; + z1 = 0; + for (w1 = 100; w1 <= 7000; w1+=100) + { + x1 = w1+(1<<12); + y1 = w1-(1<<12); + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%d: sqrt=%f (%f)\n", w1, (cordic_1Kp/MUL)*x2/MUL, sqrt((double)w1/MUL)); +#endif + } + + // LINEAR, VECTORING, RECIPROCAL +#ifndef DATAGEN + printf("\nRECIPROCAL\n"); +#endif + gdirection = VECTORING; gmode = LINEAR; + z1 = 0; + y1 = (1<<14); + for (x1 = 32000; x1 > 8000; x1-=250) + { + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%d: 1/x=%f (%f)\n", x1, z2/MUL, (double)y1/x1); +#endif + } + + // HYPERBOLIC, VECTORING, SQUARE ROOT + LINEAR, VECTORING, RECIPROCAL +#ifndef DATAGEN + printf("\nINVERSE SQUARE ROOT\n"); +#endif + for (w1 = 4000; w1 <= 28600; w1+=200) + { + gdirection = VECTORING; gmode = HYPERBOLIC; + z1 = 0; + x1 = w1+(1<<12); + y1 = w1-(1<<12); + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%d: sqrt=%f (%f)\n", w1, (cordic_1Kp/MUL)*x2/MUL, sqrt((double)w1/MUL)); +#endif + gdirection = VECTORING; gmode = LINEAR; + z1 = 0; + y1 = (1<<14); + x1 = (cordic_1Kp/MUL)*x2; + cordic(gdirection, gmode, x1, y1, z1, &x2, &y2, &z2); +#ifdef DATAGEN +// Use this to generate the "cordic_test_data.txt" reference vectors. + printf("%04x %04x %04x %04x %04x %04x %04x %04x\n", + gdirection, gmode, x1&0xffff, y1&0xffff, z1&0xffff, x2&0xffff, y2&0xffff, z2&0xffff); +#else +// Use this to compare floating-point (math.h) against CORDIC fixed-point +// results. + printf("%d: 1/sqrt(x)=%f (%f)\n", w1, z2/MUL, sqrt((double)MUL/w1)); +#endif + } + return (0); +}
trunk/sw/cordic.c Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sw/cordic.dot =================================================================== --- trunk/sw/cordic.dot (nonexistent) +++ trunk/sw/cordic.dot (revision 2) @@ -0,0 +1,200 @@ +digraph cordic +{ + add_18 [label="add", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + add_27 [label="add", ntype="operation", argix="-1", dataspec="na", bb="4", shape="ellipse", fillcolor="yellow"]; + add_30 [label="add", ntype="operation", argix="-1", dataspec="na", bb="5", shape="ellipse", fillcolor="yellow"]; + add_32 [label="add", ntype="operation", argix="-1", dataspec="na", bb="5", shape="ellipse", fillcolor="yellow"]; + add_39 [label="add", ntype="operation", argix="-1", dataspec="na", bb="7", shape="ellipse", fillcolor="yellow"]; + add_40 [label="add", ntype="operation", argix="-1", dataspec="na", bb="7", shape="ellipse", fillcolor="yellow"]; + add_42 [label="add", ntype="operation", argix="-1", dataspec="na", bb="8", shape="ellipse", fillcolor="yellow"]; + and_36 [label="and", ntype="operation", argix="-1", dataspec="na", bb="6", shape="ellipse", fillcolor="yellow"]; + cnst0 [label="0", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst1 [label="1", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst14 [label="14", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst15 [label="15", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst2 [label="2", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst28 [label="28", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cnst4 [label="4", ntype="constant", argix="-1", dataspec="s16", bb="-1", shape="diamond", fillcolor="magenta"]; + cordic_tab [label="cordic_tab[42]={65535,8999,4184,2058,1025,512,256,128,64,32,16,8,4,2,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,12867,7596,4013,2037,1022,511,255,127,63,31,15,7,3,1}", ntype="hwelem", argix="-1", dataspec="s16", bb="-1", shape="box", fillcolor="salmon"]; + direction [label="direction", ntype="invar", argix="0", dataspec="s16", bb="-1", shape="invtriangle", fillcolor="green"]; + jmpeq_25 [label="jmpeq", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + jmpeq_37 [label="jmpeq", ntype="operation", argix="-1", dataspec="na", bb="6", shape="ellipse", fillcolor="yellow"]; + jmplt_12 [label="jmplt", ntype="operation", argix="-1", dataspec="na", bb="2", shape="ellipse", fillcolor="yellow"]; + jmpun_11 [label="jmpun", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + jmpun_29 [label="jmpun", ntype="operation", argix="-1", dataspec="na", bb="4", shape="ellipse", fillcolor="yellow"]; + jmpun_33 [label="jmpun", ntype="operation", argix="-1", dataspec="na", bb="5", shape="ellipse", fillcolor="yellow"]; + jmpun_41 [label="jmpun", ntype="operation", argix="-1", dataspec="na", bb="7", shape="ellipse", fillcolor="yellow"]; + jmpun_43 [label="jmpun", ntype="operation", argix="-1", dataspec="na", bb="8", shape="ellipse", fillcolor="yellow"]; + ldc_0 [label="ldc", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + ldc_1 [label="ldc", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + ldc_10 [label="ldc", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + load_19 [label="load", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + mode [label="mode", ntype="invar", argix="1", dataspec="s16", bb="-1", shape="invtriangle", fillcolor="green"]; + mov_2 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + mov_3 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + mov_4 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + mov_44 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="9", shape="ellipse", fillcolor="yellow"]; + mov_45 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="9", shape="ellipse", fillcolor="yellow"]; + mov_46 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="9", shape="ellipse", fillcolor="yellow"]; + mov_5 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + mov_6 [label="mov", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + muxeq_16 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + muxeq_17 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + muxeq_21 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + muxeq_24 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + muxeq_7 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + muxeq_8 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + muxeq_9 [label="muxeq", ntype="operation", argix="-1", dataspec="na", bb="1", shape="ellipse", fillcolor="yellow"]; + muxne_23 [label="muxne", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + neg_14 [label="neg", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + seteq_34 [label="seteq", ntype="operation", argix="-1", dataspec="na", bb="6", shape="ellipse", fillcolor="yellow"]; + seteq_35 [label="seteq", ntype="operation", argix="-1", dataspec="na", bb="6", shape="ellipse", fillcolor="yellow"]; + shl_38 [label="shl", ntype="operation", argix="-1", dataspec="na", bb="7", shape="ellipse", fillcolor="yellow"]; + shr_13 [label="shr", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + shr_15 [label="shr", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + shr_20 [label="shr", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + shr_22 [label="shr", ntype="operation", argix="-1", dataspec="na", bb="3", shape="ellipse", fillcolor="yellow"]; + sub_26 [label="sub", ntype="operation", argix="-1", dataspec="na", bb="4", shape="ellipse", fillcolor="yellow"]; + sub_28 [label="sub", ntype="operation", argix="-1", dataspec="na", bb="4", shape="ellipse", fillcolor="yellow"]; + sub_31 [label="sub", ntype="operation", argix="-1", dataspec="na", bb="5", shape="ellipse", fillcolor="yellow"]; + xin [label="xin", ntype="invar", argix="2", dataspec="s16", bb="-1", shape="invtriangle", fillcolor="green"]; + xout [label="xout", ntype="outvar", argix="0", dataspec="s16", bb="-1", shape="triangle", fillcolor="cyan"]; + yin [label="yin", ntype="invar", argix="3", dataspec="s16", bb="-1", shape="invtriangle", fillcolor="green"]; + yout [label="yout", ntype="outvar", argix="1", dataspec="s16", bb="-1", shape="triangle", fillcolor="cyan"]; + zin [label="zin", ntype="invar", argix="4", dataspec="s16", bb="-1", shape="invtriangle", fillcolor="green"]; + zout [label="zout", ntype="outvar", argix="2", dataspec="s16", bb="-1", shape="triangle", fillcolor="cyan"]; + + add_18 -> load_19 [label="t2", etype="D", vtype="localvar", order="2", dataspec="s16"]; + add_18 -> muxne_23 [label="t2", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_27 -> mov_45 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_27 -> shr_13 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_27 -> shr_22 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_27 -> sub_31 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_30 -> mov_44 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_30 -> shr_15 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_30 -> sub_26 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_32 -> mov_46 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_32 -> shr_20 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_32 -> sub_28 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_39 -> add_40 [label="t4", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_40 -> add_39 [label="i", etype="D", vtype="localvar", order="2", dataspec="s16"]; + add_40 -> seteq_34 [label="i", etype="D", vtype="localvar", order="2", dataspec="s16"]; + add_40 -> shl_38 [label="i", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_42 -> add_18 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_42 -> jmplt_12 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_42 -> seteq_34 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + add_42 -> shr_13 [label="k", etype="D", vtype="localvar", order="2", dataspec="s16"]; + add_42 -> shr_15 [label="k", etype="D", vtype="localvar", order="2", dataspec="s16"]; + and_36 -> jmpeq_37 [label="t2", etype="D", vtype="localvar", order="1", dataspec="s16"]; + cnst0 -> jmpeq_25 [label="0", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst0 -> ldc_0 [label="0", etype="D", vtype="globalvar", order="1", dataspec="s16"]; + cnst0 -> muxeq_21 [label="0", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst0 -> muxeq_24 [label="0", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst0 -> muxeq_9 [label="0", etype="D", vtype="globalvar", order="4", dataspec="s16"]; + cnst0 -> muxne_23 [label="0", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst14 -> jmplt_12 [label="14", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst14 -> muxeq_8 [label="14", etype="D", vtype="globalvar", order="4", dataspec="s16"]; + cnst15 -> shr_20 [label="15", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst15 -> shr_22 [label="15", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> add_40 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> add_42 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> jmpeq_37 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> ldc_1 [label="1", etype="D", vtype="globalvar", order="1", dataspec="s16"]; + cnst1 -> muxeq_16 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> muxeq_8 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst1 -> shl_38 [label="1", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst28 -> muxeq_8 [label="28", etype="D", vtype="globalvar", order="8", dataspec="s16"]; + cnst2 -> muxeq_17 [label="2", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst2 -> muxeq_7 [label="2", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst2 -> muxeq_9 [label="2", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst2 -> seteq_35 [label="2", etype="D", vtype="globalvar", order="2", dataspec="s16"]; + cnst4 -> ldc_10 [label="4", etype="D", vtype="globalvar", order="1", dataspec="s16"]; + cordic_tab -> load_19 [label="cordic_tab[42]={65535,8999,4184,2058,1025,512,256,128,64,32,16,8,4,2,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,12867,7596,4013,2037,1022,511,255,127,63,31,15,7,3,1}", etype="D", vtype="globalvar", order="1", dataspec="s16"]; + direction -> mov_5 [label="direction", etype="D", vtype="inarg", order="1", dataspec="s16"]; + jmpeq_25 -> add_30 [label="F", etype="F", order="2", dataspec="u1"]; + jmpeq_25 -> sub_26 [label="T", etype="T", order="1", dataspec="u1"]; + jmpeq_37 -> add_42 [label="F", etype="F", order="2", dataspec="u1"]; + jmpeq_37 -> shl_38 [label="T", etype="T", order="1", dataspec="u1"]; + jmplt_12 -> mov_44 [label="F", etype="F", order="2", dataspec="u1"]; + jmplt_12 -> shr_13 [label="T", etype="T", order="1", dataspec="u1"]; + jmpun_11 -> jmplt_12 [label="U", etype="U", order="1", dataspec="u1"]; + jmpun_29 -> seteq_34 [label="U", etype="U", order="1", dataspec="u1"]; + jmpun_33 -> seteq_34 [label="U", etype="U", order="1", dataspec="u1"]; + jmpun_41 -> shr_13 [label="U", etype="U", order="1", dataspec="u1"]; + jmpun_43 -> jmplt_12 [label="U", etype="U", order="1", dataspec="u1"]; + ldc_0 -> muxeq_16 [label="zero", etype="D", vtype="localvar", order="4", dataspec="s16"]; + ldc_0 -> muxeq_21 [label="zero", etype="D", vtype="localvar", order="4", dataspec="s16"]; + ldc_0 -> muxeq_7 [label="zero", etype="D", vtype="localvar", order="8", dataspec="s16"]; + ldc_0 -> muxne_23 [label="zero", etype="D", vtype="localvar", order="4", dataspec="s16"]; + ldc_10 -> add_39 [label="i", etype="D", vtype="localvar", order="2", dataspec="s16"]; + ldc_10 -> seteq_34 [label="i", etype="D", vtype="localvar", order="2", dataspec="s16"]; + ldc_10 -> shl_38 [label="i", etype="D", vtype="localvar", order="1", dataspec="s16"]; + ldc_1 -> muxeq_21 [label="one", etype="D", vtype="localvar", order="8", dataspec="s16"]; + ldc_1 -> muxeq_7 [label="one", etype="D", vtype="localvar", order="4", dataspec="s16"]; + ldc_1 -> muxne_23 [label="one", etype="D", vtype="localvar", order="8", dataspec="s16"]; + load_19 -> add_32 [label="tabval", etype="D", vtype="localvar", order="2", dataspec="s16"]; + load_19 -> sub_28 [label="tabval", etype="D", vtype="localvar", order="2", dataspec="s16"]; + mode -> mov_6 [label="mode", etype="D", vtype="inarg", order="1", dataspec="s16"]; + mov_2 -> add_30 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_2 -> mov_44 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_2 -> shr_15 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_2 -> sub_26 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_3 -> add_27 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_3 -> mov_45 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_3 -> shr_13 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_3 -> shr_22 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_3 -> sub_31 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_44 -> xout [label="xout", etype="D", vtype="outarg", order="1", dataspec="s16"]; + mov_45 -> yout [label="yout", etype="D", vtype="outarg", order="1", dataspec="s16"]; + mov_46 -> zout [label="zout", etype="D", vtype="outarg", order="1", dataspec="s16"]; + mov_4 -> add_32 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_4 -> mov_46 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_4 -> shr_20 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_4 -> sub_28 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_5 -> muxeq_24 [label="ldirection", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> muxeq_16 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> muxeq_17 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> muxeq_7 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> muxeq_8 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> muxeq_9 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + mov_6 -> seteq_35 [label="lmode", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_16 -> muxeq_17 [label="t5", etype="D", vtype="localvar", order="8", dataspec="s16"]; + muxeq_17 -> add_30 [label="ybyk", etype="D", vtype="localvar", order="2", dataspec="s16"]; + muxeq_17 -> sub_26 [label="ybyk", etype="D", vtype="localvar", order="2", dataspec="s16"]; + muxeq_21 -> muxeq_24 [label="t1", etype="D", vtype="localvar", order="4", dataspec="s16"]; + muxeq_24 -> jmpeq_25 [label="d", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_7 -> add_18 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_7 -> add_42 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_7 -> jmplt_12 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_7 -> seteq_34 [label="k", etype="D", vtype="localvar", order="1", dataspec="s16"]; + muxeq_7 -> shr_13 [label="k", etype="D", vtype="localvar", order="2", dataspec="s16"]; + muxeq_7 -> shr_15 [label="k", etype="D", vtype="localvar", order="2", dataspec="s16"]; + muxeq_8 -> muxeq_9 [label="t0", etype="D", vtype="localvar", order="8", dataspec="s16"]; + muxeq_9 -> add_18 [label="offset", etype="D", vtype="localvar", order="2", dataspec="s16"]; + muxne_23 -> muxeq_24 [label="t3", etype="D", vtype="localvar", order="8", dataspec="s16"]; + neg_14 -> muxeq_17 [label="t1", etype="D", vtype="localvar", order="4", dataspec="s16"]; + neg_14 -> muxeq_24 [label="t1", etype="D", vtype="localvar", order="4", dataspec="s16"]; + seteq_34 -> and_36 [label="t0", etype="D", vtype="localvar", order="1", dataspec="s16"]; + seteq_35 -> and_36 [label="t1", etype="D", vtype="localvar", order="2", dataspec="s16"]; + shl_38 -> add_39 [label="t3", etype="D", vtype="localvar", order="1", dataspec="s16"]; + shr_13 -> muxeq_16 [label="t0", etype="D", vtype="localvar", order="8", dataspec="s16"]; + shr_13 -> neg_14 [label="t0", etype="D", vtype="localvar", order="1", dataspec="s16"]; + shr_15 -> add_27 [label="xbyk", etype="D", vtype="localvar", order="2", dataspec="s16"]; + shr_15 -> sub_31 [label="xbyk", etype="D", vtype="localvar", order="2", dataspec="s16"]; + shr_20 -> muxeq_21 [label="t7", etype="D", vtype="localvar", order="1", dataspec="s16"]; + shr_22 -> muxne_23 [label="t2", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_26 -> add_30 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_26 -> mov_44 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_26 -> shr_15 [label="x", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_28 -> add_32 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_28 -> mov_46 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_28 -> shr_20 [label="z", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_31 -> add_27 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_31 -> mov_45 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_31 -> shr_13 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + sub_31 -> shr_22 [label="y", etype="D", vtype="localvar", order="1", dataspec="s16"]; + xin -> mov_2 [label="xin", etype="D", vtype="inarg", order="1", dataspec="s16"]; + yin -> mov_3 [label="yin", etype="D", vtype="inarg", order="1", dataspec="s16"]; + zin -> mov_4 [label="zin", etype="D", vtype="inarg", order="1", dataspec="s16"]; + +}
trunk/sw/cordic.dot Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/sw/cordic.dot.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = image/png Index: trunk/sw/cordic.dot.png =================================================================== --- trunk/sw/cordic.dot.png (nonexistent) +++ trunk/sw/cordic.dot.png (revision 2)
trunk/sw/cordic.dot.png Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +image/png \ No newline at end of property Index: trunk/syn/xise/log/cordic-xst14.6.txt =================================================================== --- trunk/syn/xise/log/cordic-xst14.6.txt (nonexistent) +++ trunk/syn/xise/log/cordic-xst14.6.txt (revision 2) @@ -0,0 +1,667 @@ +Release 14.6 - xst P.68d (nt) +Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved. +--> +TABLE OF CONTENTS + 1) Synthesis Options Summary + 2) HDL Parsing + 3) HDL Elaboration + 4) HDL Synthesis + 4.1) HDL Synthesis Report + 5) Advanced HDL Synthesis + 5.1) Advanced HDL Synthesis Report + 6) Low Level Synthesis + 7) Partition Report + 8) Design Summary + 8.1) Primitive and Black Box Usage + 8.2) Device utilization summary + 8.3) Partition Resource Summary + 8.4) Timing Report + 8.4.1) Clock Information + 8.4.2) Asynchronous Control Signals Information + 8.4.3) Timing Summary + 8.4.4) Timing Details + 8.4.5) Cross Clock Domains Report + + +========================================================================= +* Synthesis Options Summary * +========================================================================= +---- Source Parameters +Input File Name : ".work" +Input Format : mixed + +---- Target Parameters +Output File Name : ".ngc" +Output Format : NGC +Target Device : xc6vlx75t-ff484-1 + +---- Source Options +Top Module Name : cordic + +---- Target Options +Add IO Buffers : no + +---- General Options +Optimization Goal : Speed +Optimization Effort : 1 + +========================================================================= + + +========================================================================= +* HDL Parsing * +========================================================================= +Parsing VHDL file "E:\projects\cordic\sim\rtl_sim\vhdl\operpack.vhd" into library work +Parsing package . +Parsing package body . +Parsing VHDL file "E:\projects\cordic\rtl\vhdl\cordic_cdt_pkg.vhd" into library work +Parsing package . +Parsing VHDL file "E:\projects\cordic\rtl\vhdl\cordic.vhd" into library work +Parsing entity . +Parsing architecture of entity . + +========================================================================= +* HDL Elaboration * +========================================================================= + +Elaborating entity (architecture ) from library . +WARNING:HDLCompiler:92 - "E:\projects\cordic\rtl\vhdl\cordic.vhd" Line 367: cordic_hyp_steps should be on the sensitivity list of the process +WARNING:HDLCompiler:92 - "E:\projects\cordic\rtl\vhdl\cordic.vhd" Line 387: cordic_tab should be on the sensitivity list of the process + +========================================================================= +* HDL Synthesis * +========================================================================= + +Synthesizing Unit . + Related source file is "E:\projects\cordic\rtl\vhdl\cordic.vhd". +WARNING:Xst:2999 - Signal 'cordic_hyp_steps', unconnected in block 'cordic', is tied to its initial value. +WARNING:Xst:2999 - Signal 'cordic_tab', unconnected in block 'cordic', is tied to its initial value. +WARNING:Xst:3035 - Index value(s) does not match array range for signal , simulation mismatch. + Found 15x16-bit single-port Read Only RAM for signal . +WARNING:Xst:3035 - Index value(s) does not match array range for signal , simulation mismatch. + Found 42x16-bit single-port Read Only RAM for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 3-bit register for signal . + Found finite state machine for signal . + ----------------------------------------------------------------------- + | States | 6 | + | Transitions | 9 | + | Inputs | 3 | + | Outputs | 5 | + | Clock | clk (rising_edge) | + | Reset | reset (positive) | + | Reset type | asynchronous | + | Reset State | s_entry | + | Power Up State | s_entry | + | Encoding | auto | + | Implementation | LUT | + ----------------------------------------------------------------------- + Found 16-bit adder for signal created at line 374. + Found 16-bit adder for signal created at line 386. + Found 16-bit adder for signal created at line 408. + Found 16-bit adder for signal created at line 409. + Found 16-bit adder for signal created at line 412. + Found 16-bit adder for signal created at line 428. + Found 16-bit subtractor for signal > created at line 407. + Found 16-bit subtractor for signal > created at line 410. + Found 16-bit subtractor for signal > created at line 411. + Found 16-bit comparator greater for signal created at line 361 + Found 16-bit comparator greater for signal created at line 429 + Summary: + inferred 2 RAM(s). + inferred 9 Adder/Subtractor(s). + inferred 528 D-type flip-flop(s). + inferred 2 Comparator(s). + inferred 49 Multiplexer(s). + inferred 1 Finite State Machine(s). +Unit synthesized. + +========================================================================= +HDL Synthesis Report + +Macro Statistics +# RAMs : 2 + 15x16-bit single-port Read Only RAM : 1 + 42x16-bit single-port Read Only RAM : 1 +# Adders/Subtractors : 9 + 16-bit adder : 6 + 16-bit subtractor : 3 +# Registers : 33 + 16-bit register : 33 +# Comparators : 2 + 16-bit comparator greater : 2 +# Multiplexers : 49 + 16-bit 2-to-1 multiplexer : 49 +# FSMs : 1 + +========================================================================= + +========================================================================= +* Advanced HDL Synthesis * +========================================================================= + +WARNING:Xst:2404 - FFs/Latches > (without init value) have a constant value of 0 in block . +WARNING:Xst:2404 - FFs/Latches > (without init value) have a constant value of 0 in block . + +Synthesizing (advanced) Unit . +INFO:Xst:3218 - HDL ADVISOR - The RAM will be implemented on LUTs either because you have described an asynchronous read or because of currently unsupported block RAM features. If you have described an asynchronous read, making it synchronous would allow you to take advantage of available block RAM resources, for optimized device usage and improved timings. Please refer to your documentation for coding guidelines. + ----------------------------------------------------------------------- + | ram_type | Distributed | | + ----------------------------------------------------------------------- + | Port A | + | aspect ratio | 15-word x 16-bit | | + | weA | connected to signal | high | + | addrA | connected to signal > | | + | diA | connected to signal | | + | doA | connected to internal node | | + ----------------------------------------------------------------------- +INFO:Xst:3218 - HDL ADVISOR - The RAM will be implemented on LUTs either because you have described an asynchronous read or because of currently unsupported block RAM features. If you have described an asynchronous read, making it synchronous would allow you to take advantage of available block RAM resources, for optimized device usage and improved timings. Please refer to your documentation for coding guidelines. + ----------------------------------------------------------------------- + | ram_type | Distributed | | + ----------------------------------------------------------------------- + | Port A | + | aspect ratio | 42-word x 16-bit | | + | weA | connected to signal | high | + | addrA | connected to signal > | | + | diA | connected to signal | | + | doA | connected to internal node | | + ----------------------------------------------------------------------- +Unit synthesized (advanced). + +========================================================================= +Advanced HDL Synthesis Report + +Macro Statistics +# RAMs : 2 + 15x16-bit single-port distributed Read Only RAM : 1 + 42x16-bit single-port distributed Read Only RAM : 1 +# Adders/Subtractors : 9 + 16-bit adder : 6 + 16-bit subtractor : 3 +# Registers : 501 + Flip-Flops : 501 +# Comparators : 2 + 16-bit comparator greater : 2 +# Multiplexers : 49 + 16-bit 2-to-1 multiplexer : 49 +# FSMs : 1 + +========================================================================= + +========================================================================= +* Low Level Synthesis * +========================================================================= +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following 3 FFs/Latches, which will be removed : +Analyzing FSM for best encoding. +Optimizing FSM on signal with user encoding. +----------------------- + State | Encoding +----------------------- + s_entry | 000 + s_exit | 001 + s_001_001 | 010 + s_002_001 | 011 + s_003_001 | 100 + s_004_001 | 101 +----------------------- +WARNING:Xst:1710 - FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . + +Optimizing unit ... +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:2677 - Node of sequential type is unconnected in block . +WARNING:Xst:1710 - FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch (without init value) has a constant value of 0 in block . This FF/Latch will be trimmed during the optimization process. +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following FF/Latch, which will be removed : +INFO:Xst:2261 - The FF/Latch in Unit is equivalent to the following 2 FFs/Latches, which will be removed : + +Mapping all equations... +Building and optimizing final netlist ... +Found area constraint ratio of 100 (+ 0) on block cordic, actual ratio is 1. +FlipFlop current_state_FSM_FFd1 has been replicated 1 time(s) +FlipFlop current_state_FSM_FFd3 has been replicated 1 time(s) +FlipFlop k_reg_1 has been replicated 1 time(s) + +Final Macro Processing ... + +========================================================================= +Final Register Report + +Macro Statistics +# Registers : 310 + Flip-Flops : 310 + +========================================================================= + +========================================================================= +* Partition Report * +========================================================================= + +Partition Implementation Status +------------------------------- + + No Partitions were found in this design. + +------------------------------- + +========================================================================= +* Design Summary * +========================================================================= + +Top Level Output File Name : .ngc.ngc + +Primitive and Black Box Usage: +------------------------------ +# BELS : 1046 +# GND : 1 +# INV : 1 +# LUT1 : 4 +# LUT2 : 17 +# LUT3 : 28 +# LUT4 : 149 +# LUT5 : 69 +# LUT6 : 527 +# MUXCY : 113 +# MUXF7 : 13 +# VCC : 1 +# XORCY : 123 +# FlipFlops/Latches : 310 +# FDC : 194 +# FDCE : 116 + +Device utilization summary: +--------------------------- + +Selected Device : 6vlx75tff484-1 + + +Slice Logic Utilization: + Number of Slice Registers: 310 out of 93120 0% + Number of Slice LUTs: 795 out of 46560 1% + Number used as Logic: 795 out of 46560 1% + +Slice Logic Distribution: + Number of LUT Flip Flop pairs used: 871 + Number with an unused Flip Flop: 561 out of 871 64% + Number with an unused LUT: 76 out of 871 8% + Number of fully used LUT-FF pairs: 234 out of 871 26% + Number of unique control sets: 4 + +IO Utilization: + Number of IOs: 133 + Number of bonded IOBs: 0 out of 240 0% + +Specific Feature Utilization: + +--------------------------- +Partition Resource Summary: +--------------------------- + + No Partitions were found in this design. + +--------------------------- + + +========================================================================= +Timing Report + +NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. + FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT + GENERATED AFTER PLACE-and-ROUTE. + +Clock Information: +------------------ +-----------------------------------+------------------------+-------+ +Clock Signal | Clock buffer(FF name) | Load | +-----------------------------------+------------------------+-------+ +clk | NONE(ldirection_reg_0) | 310 | +-----------------------------------+------------------------+-------+ +INFO:Xst:2169 - HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems. + +Asynchronous Control Signals Information: +---------------------------------------- +No asynchronous control signals found in this design + +Timing Summary: +--------------- +Speed Grade: -1 + + Minimum period: 6.273ns (Maximum Frequency: 159.413MHz) + Minimum input arrival time before clock: 2.513ns + Maximum output required time after clock: 1.256ns + Maximum combinational path delay: No path found + +Timing Details: +--------------- +All values displayed in nanoseconds (ns) + +========================================================================= +Timing constraint: Default period analysis for Clock 'clk' + Clock period: 6.273ns (frequency: 159.413MHz) + Total number of paths / destination ports: 1871281 / 410 +------------------------------------------------------------------------- +Delay: 6.273ns (Levels of Logic = 23) + Source: lmode_reg_4 (FF) + Destination: z_reg_15 (FF) + Source Clock: clk rising + Destination Clock: clk rising + + Data Path: lmode_reg_4 to z_reg_15 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDC:C->Q 2 0.375 0.784 lmode_reg_4 (lmode_reg_4) + LUT6:I0->O 7 0.068 0.531 GND_6_o_lmode_reg[15]_equal_60_o<15>11 (GND_6_o_lmode_reg[15]_equal_60_o<15>11) + LUT6:I4->O 3 0.068 0.431 n0043<15>1_1 (n0043<15>1) + LUT6:I5->O 1 0.068 0.000 Madd_kk_next[15]_offset_reg[15]_add_63_OUT_lut<1> (Madd_kk_next[15]_offset_reg[15]_add_63_OUT_lut<1>) + MUXCY:S->O 1 0.290 0.000 Madd_kk_next[15]_offset_reg[15]_add_63_OUT_cy<1> (Madd_kk_next[15]_offset_reg[15]_add_63_OUT_cy<1>) + MUXCY:CI->O 1 0.020 0.000 Madd_kk_next[15]_offset_reg[15]_add_63_OUT_cy<2> (Madd_kk_next[15]_offset_reg[15]_add_63_OUT_cy<2>) + XORCY:CI->O 20 0.239 0.542 Madd_kk_next[15]_offset_reg[15]_add_63_OUT_xor<3> (kk_next[15]_offset_reg[15]_add_63_OUT<3>) + LUT4:I3->O 20 0.068 0.903 Mmux_t5_next101 (t5_next<3>) + LUT6:I0->O 3 0.068 0.431 Mmux_tabval_next103 (Mmux_tabval_next102) + LUT6:I5->O 1 0.068 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_lut<3> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_lut<3>) + MUXCY:S->O 1 0.290 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<3> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<3>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<4> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<4>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<5> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<5>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<6> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<6>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<7> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<7>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<8> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<8>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<9> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<9>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<10> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<10>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<11> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<11>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<12> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<12>) + MUXCY:CI->O 1 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<13> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<13>) + MUXCY:CI->O 0 0.020 0.000 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<14> (Madd_z_reg[15]_tabval_next[15]_add_76_OUT_cy<14>) + XORCY:CI->O 2 0.239 0.497 Madd_z_reg[15]_tabval_next[15]_add_76_OUT_xor<15> (z_reg[15]_tabval_next[15]_add_76_OUT<15>) + LUT6:I4->O 1 0.068 0.000 Mmux_z_next71 (z_next<15>) + FDCE:D 0.011 z_reg_15 + ---------------------------------------- + Total 6.273ns (2.154ns logic, 4.119ns route) + (34.3% logic, 65.7% route) + +========================================================================= +Timing constraint: Default OFFSET IN BEFORE for Clock 'clk' + Total number of paths / destination ports: 619 / 396 +------------------------------------------------------------------------- +Offset: 2.513ns (Levels of Logic = 4) + Source: mode<3> (PAD) + Destination: offset_reg_4 (FF) + Destination Clock: clk rising + + Data Path: mode<3> to offset_reg_4 + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + LUT5:I4->O 2 0.068 0.784 Mmux_lmode_next101 (lmode_next<3>) + LUT6:I0->O 2 0.068 0.644 GND_6_o_lmode_next[15]_equal_37_o<15>11 (GND_6_o_lmode_next[15]_equal_37_o<15>11) + LUT6:I2->O 2 0.068 0.784 GND_6_o_lmode_next[15]_equal_39_o<15>1 (GND_6_o_lmode_next[15]_equal_39_o) + LUT6:I0->O 1 0.068 0.000 Mmux_t0_next[15]_GND_6_o_mux_39_OUT111 (t0_next[15]_GND_6_o_mux_39_OUT<4>) + FDCE:D 0.011 offset_reg_4 + ---------------------------------------- + Total 2.513ns (0.301ns logic, 2.212ns route) + (12.0% logic, 88.0% route) + +========================================================================= +Timing constraint: Default OFFSET OUT AFTER for Clock 'clk' + Total number of paths / destination ports: 54 / 50 +------------------------------------------------------------------------- +Offset: 1.256ns (Levels of Logic = 1) + Source: current_state_FSM_FFd3 (FF) + Destination: ready (PAD) + Source Clock: clk rising + + Data Path: current_state_FSM_FFd3 to ready + Gate Net + Cell:in->out fanout Delay Delay Logical Name (Net Name) + ---------------------------------------- ------------ + FDC:C->Q 395 0.375 0.813 current_state_FSM_FFd3 (current_state_FSM_FFd3) + LUT3:I0->O 0 0.068 0.000 current_state__n0432<0>1 (ready) + ---------------------------------------- + Total 1.256ns (0.443ns logic, 0.813ns route) + (35.3% logic, 64.7% route) + +========================================================================= + +Cross Clock Domains Report: +-------------------------- + +Clock to Setup on destination clock clk +---------------+---------+---------+---------+---------+ + | Src:Rise| Src:Fall| Src:Rise| Src:Fall| +Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall| +---------------+---------+---------+---------+---------+ +clk | 6.273| | | | +---------------+---------+---------+---------+---------+ + +========================================================================= + + +Total REAL time to Xst completion: 38.00 secs +Total CPU time to Xst completion: 37.57 secs + +--> + +Total memory usage is 261536 kilobytes + +Number of errors : 0 ( 0 filtered) +Number of warnings : 194 ( 0 filtered) +Number of infos : 11 ( 0 filtered) +
trunk/syn/xise/log/cordic-xst14.6.txt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/syn/xise/run/syn.sh =================================================================== --- trunk/syn/xise/run/syn.sh (nonexistent) +++ trunk/syn/xise/run/syn.sh (revision 2) @@ -0,0 +1,47 @@ +# Filename : syn.sh +# Author : Nikolaos Kavvadias 2013, 2014 +# Copyright: (C) 2013, 2014 Nikolaos Kavvadias + +#!/bin/bash + +########################################################################## +# Script for running Xilinx XST logic synthesis of cordic. +# USAGE: +# ./syn.sh +########################################################################## + +E_PRINTUSAGE=83 + +function print_usage () { + echo "Script for running Xilinx XST logic synthesis of cordic." + echo "Author: Nikolaos Kavvadias (C) 2013, 2014" + echo "Copyright: (C) 2013, 2014 Nikolaos Kavvadias" + echo "Usage: ./syn.sh" +} + +if [ "$1" == "-help" ] +then + print_usage; + exit $E_PRINTUSAGE +fi + +export XDIR="c:/XilinxISE/14.6/ISE_DS/ISE" + +#arch="spartan3" +arch="virtex6" +#part="xc3s200-ft256-4" +part="xc6vlx75t-ff484-1" + +make -if ../bin/xst.mk clean +SOURCES="../../../sim/rtl_sim/vhdl/operpack.vhd ../../../rtl/vhdl/cordic_cdt_pkg.vhd ../../../rtl/vhdl/cordic.vhd" +make -if ../bin/xst.mk PROJECT="${mode}" SOURCES="${SOURCES}" TOPDIR="../log" TOP="cordic" cordic.ngc ARCH=${arch} PART=${part} + +if [ "$SECONDS" -eq 1 ] +then + units=second +else + units=seconds +fi +echo "This script has been running $SECONDS $units." + +exit 0
trunk/syn/xise/run/syn.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/syn/xise/bin/xst.mk =================================================================== --- trunk/syn/xise/bin/xst.mk (nonexistent) +++ trunk/syn/xise/bin/xst.mk (revision 2) @@ -0,0 +1,114 @@ +#XDIR = /cygdrive/c/Xilinx92i +#XDIR = /cygdrive/c/Xilinx/12.3/ISE_DS/ISE +#XDIR = "C:/Xilinx/12.3/ISE_DS/ISE" + +############################################################################ +# Some nice targets +############################################################################ + +#install: $(PROJECT).bit +# ljp $< /dev/parport0 + +floorplan: $(PROJECT).ngd $(PROJECT).par.ncd + $(FLOORPLAN) $^ + +report: + cat *.srp + +clean:: + rm -f *.work *.xst + rm -f *.ngc *.ngd *.bld *.srp *.lso *.prj + rm -f *.map.mrp *.map.ncd *.map.ngm *.mcs *.par.ncd *.par.pad + rm -f *.pcf *.prm *.bgn *.drc + rm -f *.par_pad.csv *.par_pad.txt *.par.par *.par.xpi + rm -f *.bit + rm -f *.vcd *.vvp + rm -f verilog.dump verilog.log + rm -rf _ngo/ + rm -rf xst/ + +############################################################################ +# Xilinx tools and wine +############################################################################ + +XST_DEFAULT_OPT_MODE = Speed +XST_DEFAULT_OPT_LEVEL = 1 +#DEFAULT_ARCH = spartan3 +#DEFAULT_ARCH = virtex4 +DEFAULT_ARCH = virtex6 +#DEFAULT_PART = xc3s200-ft256-4 +#DEFAULT_PART = xc4vlx25-ff668-10 +DEFAULT_PART = xc6vlx75t-ff484-1 + +XBIN = $(XDIR)/bin/nt +#XENV = XILINX=$(XDIR) LD_LIBRARY_PATH=$(XBIN) + +#XST = $(XENV) $(XBIN)/xst +#NGDBUILD = $(XENV) $(XBIN)/ngdbuild +#MAP = $(XENV) $(XBIN)/map +#PAR = $(XENV) $(XBIN)/par +#BITGEN = $(XENV) $(XBIN)/bitgen +#PROMGEN = $(XENV) $(XBIN)/promgen +#FLOORPLAN = $(XENV) $(XBIN)/floorplanner + +XST=$(XBIN)/xst +NGDBUILD=$(XBIN)/ngdbuild +MAP=$(XBIN)/map +PAR=$(XBIN)/par +BITGEN=$(XBIN)/bitgen +PROMGEN=$(XBIN)/promgen +FLOORPLAN=$(XBIN)/floorplanner + +XSTWORK = $(PROJECT).work +XSTSCRIPT = $(PROJECT).xst + +.PRECIOUS: %.ngc %.ngc %.ngd %.map.ncd %.bit %.par.ncd + +ifndef XST_OPT_MODE +XST_OPT_MODE = $(XST_DEFAULT_OPT_MODE) +endif +ifndef XST_OPT_LEVEL +XST_OPT_LEVEL = $(XST_DEFAULT_OPT_LEVEL) +endif +ifndef ARCH +ARCH = $(DEFAULT_ARCH) +endif +ifndef PART +PART = $(DEFAULT_PART) +endif + +compile: $(PROJECT).xst + $(XST) + +$(XSTWORK): $(SOURCES) + > $@ + for a in $(SOURCES); do echo "vhdl work $$a" >> $@; done + +$(XSTSCRIPT): $(XSTWORK) + > $@ + echo -n "run -ifn $(XSTWORK) -ifmt mixed -top $(TOP) -ofn $(PROJECT).ngc" >> $@ +# echo " -ofmt NGC -p $(PART) -iobuf no -generics {$(GNAME)=$(GVALUE)} -opt_mode $(XST_OPT_MODE) -opt_level $(XST_OPT_LEVEL)" >> $@ + echo " -ofmt NGC -p $(PART) -iobuf no -opt_mode $(XST_OPT_MODE) -opt_level $(XST_OPT_LEVEL)" >> $@ +# echo " -move_first_stage yes -move_last_stage yes -optimize_primitives yes -register_balancing yes" >> $@ + +%.ngc: $(XSTSCRIPT) + $(XST) -ifn $< + +%.ngd: %.ngc $(PROJECT).ucf + $(NGDBUILD) -intstyle ise -dd _ngo -uc $(PROJECT).ucf -p $(PART) $*.ngc $*.ngd + +%.map.ncd: %.ngd + $(MAP) -o $@ $< $*.pcf + +%.par.ncd: %.map.ncd + $(PAR) -w -ol high $< $@ $*.pcf + +%.bit: %.par.ncd + $(BITGEN) -w -g UnusedPin:PullNone $< $@ $*.pcf + +%.prm: %.bit + $(PROMGEN) -o $@ -w -u 0 $< + +############################################################################ +# End +############################################################################
trunk/syn/xise/bin/xst.mk Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.