aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-12-02 21:18:37 +0100
committerTristan Gingold <tgingold@free.fr>2019-12-02 21:18:37 +0100
commite6a643ea1db47dc5fcf3893a81b3193869edbc38 (patch)
tree9b72a932ffb8f43a4900a5098296fff22b120048 /src/synth
parentd11ad2282157564dad9e53eccf9f2ec8a05bbda7 (diff)
downloadghdl-e6a643ea1db47dc5fcf3893a81b3193869edbc38.tar.gz
ghdl-e6a643ea1db47dc5fcf3893a81b3193869edbc38.tar.bz2
ghdl-e6a643ea1db47dc5fcf3893a81b3193869edbc38.zip
synth: support multiple synthesis.
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/ghdlsynth.h7
-rw-r--r--src/synth/synth-context.adb7
-rw-r--r--src/synth/synth-context.ads4
3 files changed, 15 insertions, 3 deletions
diff --git a/src/synth/ghdlsynth.h b/src/synth/ghdlsynth.h
index ae43c2c72..0537ceaf7 100644
--- a/src/synth/ghdlsynth.h
+++ b/src/synth/ghdlsynth.h
@@ -122,10 +122,11 @@ namespace GhdlSynth {
GHDLSYNTH_ADA_WRAPPER_WWD(get_input_net, Net, Instance, Port_Idx);
- extern "C" unsigned int ghdlsynth__ghdl_synth(int argc, const char **argv);
- inline Module ghdl_synth(int argc, const char **argv) {
+ extern "C" unsigned int ghdlsynth__ghdl_synth(int init,
+ int argc, const char **argv);
+ inline Module ghdl_synth(int init, int argc, const char **argv) {
Module res;
- res.id = ghdlsynth__ghdl_synth(argc, argv);
+ res.id = ghdlsynth__ghdl_synth(init, argc, argv);
return res;
}
diff --git a/src/synth/synth-context.adb b/src/synth/synth-context.adb
index ef9569c0c..c02604049 100644
--- a/src/synth/synth-context.adb
+++ b/src/synth/synth-context.adb
@@ -70,6 +70,13 @@ package body Synth.Context is
return Res;
end Make_Base_Instance;
+ procedure Free_Base_Instance is
+ begin
+ -- TODO: really free.
+ Build_Context := null;
+ Packages_Table.Init;
+ end Free_Base_Instance;
+
function Make_Instance (Parent : Synth_Instance_Acc;
Blk : Node;
Name : Sname := No_Sname)
diff --git a/src/synth/synth-context.ads b/src/synth/synth-context.ads
index f569a092e..e01011256 100644
--- a/src/synth/synth-context.ads
+++ b/src/synth/synth-context.ads
@@ -39,8 +39,12 @@ package Synth.Context is
(Syn_Inst: Synth_Instance_Acc; Scope: Sim_Info_Acc)
return Synth_Instance_Acc;
+ -- Create the first instance.
function Make_Base_Instance return Synth_Instance_Acc;
+ -- Free the first instance.
+ procedure Free_Base_Instance;
+
-- Create and free the corresponding synth instance.
function Make_Instance (Parent : Synth_Instance_Acc;
Blk : Node;