aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-prints.adb
diff options
context:
space:
mode:
authorT. Meissner <programming@goodcleanfun.de>2021-02-09 07:31:00 +0100
committerGitHub <noreply@github.com>2021-02-09 07:31:00 +0100
commit7d5bfac5526528e32f5f44b9bea0bbdfee21a589 (patch)
treea3d749912cca5d83f8cb1da304b90a62713d2d59 /src/vhdl/vhdl-prints.adb
parenta75c135b5bb3c817ff0d9605c5cfabbfa721c13b (diff)
downloadghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.tar.gz
ghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.tar.bz2
ghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.zip
Add support for PSL onehot/onehot0 functions (#1633)
* vhdl: parse PSL onehot/onehot0 builtin calls. For #662 * update pyGHDL bindings * Synthesis of PSL built-in onehot/onehot0 function. * testsuite/synth: add tests of PSL built-in functions onehot()/onehot0() for #662 * doc: add info about PSL built-in functions onehot()/onehot0() for #662 * synth: refactor synthesis of onehot/onehot0 functions Co-authored-by: eine <eine@users.noreply.github.com>
Diffstat (limited to 'src/vhdl/vhdl-prints.adb')
-rw-r--r--src/vhdl/vhdl-prints.adb20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb
index 9a51b5563..8fb03bf8e 100644
--- a/src/vhdl/vhdl-prints.adb
+++ b/src/vhdl/vhdl-prints.adb
@@ -2335,6 +2335,22 @@ package body Vhdl.Prints is
Disp_Token (Ctxt, Tok_Right_Paren);
end Disp_Psl_Fell;
+ procedure Disp_Psl_Onehot (Ctxt : in out Ctxt_Class; Call : Iir) is
+ begin
+ Disp_Token (Ctxt, Tok_Onehot);
+ Disp_Token (Ctxt, Tok_Left_Paren);
+ Print (Ctxt, Get_Expression (Call));
+ Disp_Token (Ctxt, Tok_Right_Paren);
+ end Disp_Psl_Onehot;
+
+ procedure Disp_Psl_Onehot0 (Ctxt : in out Ctxt_Class; Call : Iir) is
+ begin
+ Disp_Token (Ctxt, Tok_Onehot0);
+ Disp_Token (Ctxt, Tok_Left_Paren);
+ Print (Ctxt, Get_Expression (Call));
+ Disp_Token (Ctxt, Tok_Right_Paren);
+ end Disp_Psl_Onehot0;
+
procedure Disp_Psl_Declaration (Ctxt : in out Ctxt_Class; Stmt : Iir)
is
Decl : constant PSL_Node := Get_Psl_Declaration (Stmt);
@@ -4844,6 +4860,10 @@ package body Vhdl.Prints is
Disp_Psl_Rose (Ctxt, Expr);
when Iir_Kind_Psl_Fell =>
Disp_Psl_Fell (Ctxt, Expr);
+ when Iir_Kind_Psl_Onehot =>
+ Disp_Psl_Onehot (Ctxt, Expr);
+ when Iir_Kind_Psl_Onehot0 =>
+ Disp_Psl_Onehot0 (Ctxt, Expr);
when Iir_Kinds_Type_And_Subtype_Definition =>
Disp_Type (Ctxt, Expr);