Adding VHDL Support to Icarus Verilog

Adding VHDL Support to Icarus Verilog

Adding VHDL support to Icarus Verilog Maciej Sumiński, CERN FOSDEM, Brussels, 1.02.2015 Icarus Verilog ● FOSS hardware description language simulator ● Lead developer: Stephen Williams ● Written in C/C++ (& flex/bison/gperf) ● Great coverage of Verilog (IEEE 1364- 1999/2001/2005) ● Active work on SystemVerilog (IEEE 1800- 2005/2009/2012) Goal ● GHDL = VHDL simulator ● Icarus = Verilog & SystemVerilog simulator ● ? = mixed-mode simulator Icarus principles iverilog adder.vhd adder_test.v iverilogiverilog Icarus principles iverilog adder.vhd adder_test.v iverilogiverilog ivlppivlpp Icarus principles iverilog adder.vhd adder_test.v iverilogiverilog ivlppivlpp vhdlppvhdlpp Icarus principles iverilog adder.vhd adder_test.v iverilogiverilog ivlppivlpp ivlivl vhdlppvhdlpp Icarus principles iverilog adder.vhd adder_test.v Targets: vvpvvp iverilogiverilog ivlppivlpp ivlivl sizersizer fpgafpga . vhdlppvhdlpp vlog95vlog95 Icarus principles iverilog adder.vhd adder_test.v Targets: Simulation: vvpvvp a.outa.out vvpvvp iverilogiverilog ivlppivlpp ivlivl sizersizer fpgafpga . vhdlppvhdlpp vlog95vlog95 Icarus principles iverilog adder.vhd adder_test.v Targets: Simulation: vvpvvp a.outa.out vvpvvp iverilogiverilog ivlppivlpp ivlivl sizersizer VPIVPI fpgafpga . vhdlppvhdlpp vlog95vlog95 CustomCustom modulesmodules vhdlpp - example library ieee; module \mux2to1 (input wire use ieee.std_logic_1164.all; logic \i0 , input wire logic \i1 , entity mux2to1 is input wire logic \s , port( output logic \y ); i0, i1, s: in std_logic; always begin y: out std_logic); case (\s ) end mux2to1; 1'b0: \y <= \i0 ; architecture mux2to1_rtl of default: mux2to1 is \y <= \i1 ; begin endcase process (i0, i1, s) @(\i0 , \i1 , \s ) /* begin sensitivity list for process case (s) is */; when '0' => y <= i0; end when others => y <= i1; endmodule end case; end process; end mux2to1_rtl; vhdlpp Adding new features: ● Parser rules ● Elaborate ● Emit Status ● Procedures & functions ● Loops, including for .. generate ● Typedefs / subtypes ● Arrays, records ● Some of attributes (e.g. 'event, 'range) ● 80+ tests for VHDL & over 2000 for Verilog & SV Alternative approach VHDLVHDL filesfiles GHDLGHDL ObjectObject files?files? SimulationSimulation VerilogVerilog && LLVMLLVM IRIR code?code? resultsresults IcarusIcarus SystemVerilogSystemVerilog VerilogVerilog filesfiles CommonCommon runtimeruntime librarylibrary Another method GHDLGHDL VHDLVHDL filesfiles Simulation MainMain driverdriver Simulation VerilogVerilog && resultsresults SystemVerilogSystemVerilog filesfiles IcarusIcarus VerilogVerilog More information In a Nutshell, Icarus Verilog... ...has had 7,561 commits made by 36 contributors representing 175,756 lines of code ...is mostly written in C++ ● Official website with an average number of source code comments ...has a well established, mature codebase http://iverilog.icarus.com/ maintained by a large development team with increasing Y-O-Y commits ...took an estimated 46 years of effort (COCOMO model) ● Wiki starting with its first commit in November, 1998 ending with its most recent commit 22 days ago http://iverilog.wikia.com/ [source: https://www.openhub.net/p/iverilog] ● Github repository: https://github.com/steveicarus/iverilog/ https://github.com/steveicarus/ivtest/ .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    16 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us