-
Notifications
You must be signed in to change notification settings - Fork 55
Raw HDL Insertion
The goal of this feature is to approximate the functionality of (gcc's)[https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm] __asm__() function.
__asm()__ is used to directly describe cpu architecture specific assembler instructions (as opposed to being compiler from higher level C language). Similarly __vhdl__() can be used to insert arbitrary VHDL text into PipelineC functions/modules.
uint64_t main(uint64_t x, uint64_t y)
{
__vhdl__("\
-- Arch declarations go here \n
begin \n
-- The arch body, processes, assignments, etc go here \n
return_output <= x + y;
");
}```
The above PipelineC produces examples the below VHDL file.library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; library ieee_proposed; use ieee_proposed.float_pkg.all; use work.c_structs_pkg.all; entity main_0CLK_d751 is port( clk : in std_logic; x : in unsigned(63 downto 0); y : in unsigned(63 downto 0); return_output : out unsigned(63 downto 0)); end main_0CLK_d751; architecture arch of main_0CLK_d751 is -- Arch declarations go here begin -- The arch body, processes, assignments, etc go here return_output <= x + y; end arch;