aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/netlists-builders.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-07-02 19:02:56 +0200
committerTristan Gingold <tgingold@free.fr>2019-07-02 19:02:56 +0200
commita11d847187413ad04a6d98c1e867ccb5e385abe5 (patch)
treed451775064efe18c5510528e1efef86dad56224e /src/synth/netlists-builders.adb
parentc851b365a40b7643346beece274b1ba81d9af5e5 (diff)
downloadghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.tar.gz
ghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.tar.bz2
ghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.zip
synth: handle concurrent assertions.
Diffstat (limited to 'src/synth/netlists-builders.adb')
-rw-r--r--src/synth/netlists-builders.adb21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/synth/netlists-builders.adb b/src/synth/netlists-builders.adb
index f52ac4f56..d0106b10b 100644
--- a/src/synth/netlists-builders.adb
+++ b/src/synth/netlists-builders.adb
@@ -333,6 +333,17 @@ package body Netlists.Builders is
Outputs);
end Create_Dff_Modules;
+ procedure Create_Assert (Ctxt : Context_Acc)
+ is
+ Outputs : Port_Desc_Array (1 .. 0);
+ begin
+ Ctxt.M_Assert := New_User_Module
+ (Ctxt.Design, New_Sname_Artificial (Name_Assert), Id_Assert,
+ 1, 0, 0);
+ Set_Port_Desc (Ctxt.M_Assert, (0 => Create_Input ("cond", 1)),
+ Outputs);
+ end Create_Assert;
+
function Build_Builders (Design : Module) return Context_Acc
is
Res : Context_Acc;
@@ -403,6 +414,8 @@ package body Netlists.Builders is
Create_Objects_Module (Res);
Create_Dff_Modules (Res);
+ Create_Assert (Res);
+
return Res;
end Build_Builders;
@@ -843,4 +856,12 @@ package body Netlists.Builders is
return Build_Extract (Ctxt, I, Off, 1);
end Build_Extract_Bit;
+ procedure Build_Assert (Ctxt : Context_Acc; Cond : Net)
+ is
+ Inst : Instance;
+ begin
+ Inst := New_Internal_Instance (Ctxt, Ctxt.M_Assert);
+ Connect (Get_Input (Inst, 0), Cond);
+ end Build_Assert;
+
end Netlists.Builders;