nix-development-configs/haskell-clash/vhdl/MAC/topentity.vhdl
harris-chris 35b90044df Add clash
2022-03-18 11:21:33 +09:00

70 lines
1.6 KiB
VHDL

-- Automatically generated VHDL-93
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.MATH_REAL.ALL;
use std.textio.all;
use work.all;
use work.mac_types.all;
entity topentity is
port(-- clock
clk : in mac_types.clk_system;
-- reset
rst : in mac_types.rst_system;
en : in boolean;
\c$arg_0\ : in signed(63 downto 0);
\c$arg_1\ : in signed(63 downto 0);
result : out signed(63 downto 0));
end;
architecture structural of topentity is
-- MAC.hs:6:1-39
signal acc : signed(63 downto 0) := to_signed(0,64);
-- MAC.hs:6:1-39
signal x : signed(63 downto 0);
-- MAC.hs:6:1-39
signal y : signed(63 downto 0);
signal x_0 : signed(63 downto 0);
signal y_0 : signed(63 downto 0);
signal x_1 : signed(63 downto 0);
signal y_1 : signed(63 downto 0);
signal \c$arg\ : mac_types.tup2;
signal y_0_projection : signed(63 downto 0);
begin
\c$arg\ <= ( tup2_sel0_signed_0 => \c$arg_0\
, tup2_sel1_signed_1 => \c$arg_1\ );
-- register begin
acc_register : process(clk,rst)
begin
if rst = '1' then
acc <= to_signed(0,64);
elsif rising_edge(clk) then
if en then
acc <= ((x_0 + y_0));
end if;
end if;
end process;
-- register end
x <= \c$arg\.tup2_sel0_signed_0;
y <= \c$arg\.tup2_sel1_signed_1;
x_0 <= acc;
y_0_projection <= (resize(x_1 * y_1,64));
y_0 <= y_0_projection;
x_1 <= x;
y_1 <= y;
result <= acc;
end;