From b99b777af7f74a2cbc6332ff300dd7b026043b02 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sat, 28 Aug 2021 10:23:51 +0200 Subject: synth-environment: add subprograms for signals (preliminary work) --- src/synth/synth-environment.ads | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/synth/synth-environment.ads') diff --git a/src/synth/synth-environment.ads b/src/synth/synth-environment.ads index e06e254b2..945642821 100644 --- a/src/synth/synth-environment.ads +++ b/src/synth/synth-environment.ads @@ -160,6 +160,11 @@ package Synth.Environment is Phi : Phi_Type; Mark : Wire_Id); + -- Merge current Phi for an initialization. All the assignments must + -- be static values. May upgrade Output gates to Ioutput. + procedure Pop_And_Merge_Initial_Phi (Ctxt : Builders.Context_Acc; + Loc : Location_Type); + -- Handle if statement. According to SEL, the value of the wires are -- those from T or from F. procedure Merge_Phis (Ctxt : Builders.Context_Acc; @@ -194,6 +199,13 @@ package Synth.Environment is function Get_Assign_Value (Ctxt : Builders.Context_Acc; Asgn : Seq_Assign) return Net; + -- Return the value from the gate. + function Get_Gate_Value (Wid : Wire_Id) return Net; + + -- Return the current assigned value. + function Get_Assigned_Value (Ctxt : Builders.Context_Acc; Wid : Wire_Id) + return Net; + -- For low-level phi merge. -- A sequential assignment is a linked list of partial assignment. type Partial_Assign is private; @@ -215,11 +227,6 @@ package Synth.Environment is end case; end record; --- --- type Seq_Assign_Value is private; --- No_Seq_Assign_Value : constant Seq_Assign_Value; - - function Get_Assign_Partial (Asgn : Seq_Assign) return Partial_Assign; function Get_Seq_Assign_Value (Asgn : Seq_Assign) return Seq_Assign_Value; function New_Partial_Assign (Val : Net; Offset : Uns32) -- cgit v1.2.3