aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyGHDL/libghdl/errorout.py4
-rw-r--r--pyGHDL/libghdl/std_names.py353
-rw-r--r--pyGHDL/libghdl/vhdl/elocations.py1
-rw-r--r--pyGHDL/libghdl/vhdl/nodes_meta.py1
-rw-r--r--pyGHDL/libghdl/vhdl/tokens.py438
-rw-r--r--src/std_names.adb1
-rw-r--r--src/std_names.ads3
-rw-r--r--src/synth/ghdlsynth.h7
-rw-r--r--src/synth/netlists.ads2
9 files changed, 412 insertions, 398 deletions
diff --git a/pyGHDL/libghdl/errorout.py b/pyGHDL/libghdl/errorout.py
index 2d7f29ef5..a038fa77c 100644
--- a/pyGHDL/libghdl/errorout.py
+++ b/pyGHDL/libghdl/errorout.py
@@ -3,11 +3,9 @@
#
from pydecor import export
from pyGHDL.libghdl import libghdl
-from pyGHDL.libghdl._types import MessageIdWarnings
-
@export
-def Enable_Warning(Id: MessageIdWarnings, Enable: bool) -> None:
+def Enable_Warning(Id: int, Enable: bool) -> None:
libghdl.errorout__enable_warning(Id, Enable)
diff --git a/pyGHDL/libghdl/std_names.py b/pyGHDL/libghdl/std_names.py
index 201e9cb09..e716d86c2 100644
--- a/pyGHDL/libghdl/std_names.py
+++ b/pyGHDL/libghdl/std_names.py
@@ -641,179 +641,180 @@ class Name:
Allseq = 844
Anyconst = 845
Anyseq = 846
- Last_Synthesis = 846
- First_Directive = 847
- Define = 847
- Endif = 848
- Ifdef = 849
- Ifndef = 850
- Include = 851
- Timescale = 852
- Undef = 853
- Protect = 854
- Begin_Protected = 855
- End_Protected = 856
- Key_Block = 857
- Data_Block = 858
- Line = 859
- Celldefine = 860
- Endcelldefine = 861
- Default_Nettype = 862
- Resetall = 863
- Last_Directive = 863
- First_Systask = 864
- Bits = 864
- D_Root = 865
- D_Unit = 866
- Last_Systask = 866
- First_SV_Method = 867
- Size = 867
- Insert = 868
- Delete = 869
- Pop_Front = 870
- Pop_Back = 871
- Push_Front = 872
- Push_Back = 873
- Name = 874
- Len = 875
- Substr = 876
- Exists = 877
- Atoi = 878
- Itoa = 879
- Find = 880
- Find_Index = 881
- Find_First = 882
- Find_First_Index = 883
- Find_Last = 884
- Find_Last_Index = 885
- Num = 886
- Randomize = 887
- Pre_Randomize = 888
- Post_Randomize = 889
- Srandom = 890
- Get_Randstate = 891
- Set_Randstate = 892
- Seed = 893
- State = 894
- Last_SV_Method = 894
- First_BSV = 895
- uAction = 895
- uActionValue = 896
- BVI = 897
- uC = 898
- uCF = 899
- uE = 900
- uSB = 901
- uSBR = 902
- Action = 903
- Endaction = 904
- Actionvalue = 905
- Endactionvalue = 906
- Ancestor = 907
- Clocked_By = 908
- Default_Clock = 909
- Default_Reset = 910
- Dependencies = 911
- Deriving = 912
- Determines = 913
- Enable = 914
- Ifc_Inout = 915
- Input_Clock = 916
- Input_Reset = 917
- Instance = 918
- Endinstance = 919
- Let = 920
- Match = 921
- Method = 922
- Endmethod = 923
- Numeric = 924
- Output_Clock = 925
- Output_Reset = 926
- Par = 927
- Endpar = 928
- Path = 929
- Provisos = 930
- Ready = 931
- Reset_By = 932
- Rule = 933
- Endrule = 934
- Rules = 935
- Endrules = 936
- Same_Family = 937
- Schedule = 938
- Seq = 939
- Endseq = 940
- Typeclass = 941
- Endtypeclass = 942
- Valueof = 943
- uValueof = 944
- Last_BSV = 944
- First_Comment = 945
- Psl = 945
- Pragma = 946
- Synthesis = 947
- Synopsys = 948
- Translate_Off = 949
- Translate_On = 950
- Translate = 951
- Synthesis_Off = 952
- Synthesis_On = 953
- Off = 954
- Last_Comment = 954
- First_PSL = 955
- A = 955
- Af = 956
- Ag = 957
- Ax = 958
- Abort = 959
- Assume_Guarantee = 960
- Before = 961
- Clock = 962
- E = 963
- Ef = 964
- Eg = 965
- Ex = 966
- Endpoint = 967
- Eventually = 968
- Fairness = 969
- Fell = 970
- Forall = 971
- G = 972
- Inf = 973
- Inherit = 974
- Never = 975
- Next_A = 976
- Next_E = 977
- Next_Event = 978
- Next_Event_A = 979
- Next_Event_E = 980
- Prev = 981
- Rose = 982
- Strong = 983
- W = 984
- Whilenot = 985
- Within = 986
- X = 987
- Last_PSL = 987
- First_Edif = 988
- Celltype = 998
- View = 999
- Viewtype = 1000
- Direction = 1001
- Contents = 1002
- Net = 1003
- Viewref = 1004
- Cellref = 1005
- Libraryref = 1006
- Portinstance = 1007
- Joined = 1008
- Portref = 1009
- Instanceref = 1010
- Design = 1011
- Designator = 1012
- Owner = 1013
- Member = 1014
- Number = 1015
- Rename = 1016
- Userdata = 1017
- Last_Edif = 1017
+ Gclk = 847
+ Last_Synthesis = 847
+ First_Directive = 848
+ Define = 848
+ Endif = 849
+ Ifdef = 850
+ Ifndef = 851
+ Include = 852
+ Timescale = 853
+ Undef = 854
+ Protect = 855
+ Begin_Protected = 856
+ End_Protected = 857
+ Key_Block = 858
+ Data_Block = 859
+ Line = 860
+ Celldefine = 861
+ Endcelldefine = 862
+ Default_Nettype = 863
+ Resetall = 864
+ Last_Directive = 864
+ First_Systask = 865
+ Bits = 865
+ D_Root = 866
+ D_Unit = 867
+ Last_Systask = 867
+ First_SV_Method = 868
+ Size = 868
+ Insert = 869
+ Delete = 870
+ Pop_Front = 871
+ Pop_Back = 872
+ Push_Front = 873
+ Push_Back = 874
+ Name = 875
+ Len = 876
+ Substr = 877
+ Exists = 878
+ Atoi = 879
+ Itoa = 880
+ Find = 881
+ Find_Index = 882
+ Find_First = 883
+ Find_First_Index = 884
+ Find_Last = 885
+ Find_Last_Index = 886
+ Num = 887
+ Randomize = 888
+ Pre_Randomize = 889
+ Post_Randomize = 890
+ Srandom = 891
+ Get_Randstate = 892
+ Set_Randstate = 893
+ Seed = 894
+ State = 895
+ Last_SV_Method = 895
+ First_BSV = 896
+ uAction = 896
+ uActionValue = 897
+ BVI = 898
+ uC = 899
+ uCF = 900
+ uE = 901
+ uSB = 902
+ uSBR = 903
+ Action = 904
+ Endaction = 905
+ Actionvalue = 906
+ Endactionvalue = 907
+ Ancestor = 908
+ Clocked_By = 909
+ Default_Clock = 910
+ Default_Reset = 911
+ Dependencies = 912
+ Deriving = 913
+ Determines = 914
+ Enable = 915
+ Ifc_Inout = 916
+ Input_Clock = 917
+ Input_Reset = 918
+ Instance = 919
+ Endinstance = 920
+ Let = 921
+ Match = 922
+ Method = 923
+ Endmethod = 924
+ Numeric = 925
+ Output_Clock = 926
+ Output_Reset = 927
+ Par = 928
+ Endpar = 929
+ Path = 930
+ Provisos = 931
+ Ready = 932
+ Reset_By = 933
+ Rule = 934
+ Endrule = 935
+ Rules = 936
+ Endrules = 937
+ Same_Family = 938
+ Schedule = 939
+ Seq = 940
+ Endseq = 941
+ Typeclass = 942
+ Endtypeclass = 943
+ Valueof = 944
+ uValueof = 945
+ Last_BSV = 945
+ First_Comment = 946
+ Psl = 946
+ Pragma = 947
+ Synthesis = 948
+ Synopsys = 949
+ Translate_Off = 950
+ Translate_On = 951
+ Translate = 952
+ Synthesis_Off = 953
+ Synthesis_On = 954
+ Off = 955
+ Last_Comment = 955
+ First_PSL = 956
+ A = 956
+ Af = 957
+ Ag = 958
+ Ax = 959
+ Abort = 960
+ Assume_Guarantee = 961
+ Before = 962
+ Clock = 963
+ E = 964
+ Ef = 965
+ Eg = 966
+ Ex = 967
+ Endpoint = 968
+ Eventually = 969
+ Fairness = 970
+ Fell = 971
+ Forall = 972
+ G = 973
+ Inf = 974
+ Inherit = 975
+ Never = 976
+ Next_A = 977
+ Next_E = 978
+ Next_Event = 979
+ Next_Event_A = 980
+ Next_Event_E = 981
+ Prev = 982
+ Rose = 983
+ Strong = 984
+ W = 985
+ Whilenot = 986
+ Within = 987
+ X = 988
+ Last_PSL = 988
+ First_Edif = 989
+ Celltype = 999
+ View = 1000
+ Viewtype = 1001
+ Direction = 1002
+ Contents = 1003
+ Net = 1004
+ Viewref = 1005
+ Cellref = 1006
+ Libraryref = 1007
+ Portinstance = 1008
+ Joined = 1009
+ Portref = 1010
+ Instanceref = 1011
+ Design = 1012
+ Designator = 1013
+ Owner = 1014
+ Member = 1015
+ Number = 1016
+ Rename = 1017
+ Userdata = 1018
+ Last_Edif = 1018
diff --git a/pyGHDL/libghdl/vhdl/elocations.py b/pyGHDL/libghdl/vhdl/elocations.py
index bfc8bbb07..f6dbb2623 100644
--- a/pyGHDL/libghdl/vhdl/elocations.py
+++ b/pyGHDL/libghdl/vhdl/elocations.py
@@ -1,6 +1,7 @@
# Auto generated Python source file from Ada sources
# Call 'make' in 'src/vhdl' to regenerate:
#
+from pydecor import export
from pyGHDL.libghdl import libghdl
Get_Start_Location = libghdl.vhdl__elocations__get_start_location
diff --git a/pyGHDL/libghdl/vhdl/nodes_meta.py b/pyGHDL/libghdl/vhdl/nodes_meta.py
index 7d41476b2..5ec7f9503 100644
--- a/pyGHDL/libghdl/vhdl/nodes_meta.py
+++ b/pyGHDL/libghdl/vhdl/nodes_meta.py
@@ -3,6 +3,7 @@
#
from pydecor import export
from pyGHDL.libghdl import libghdl
+from pyGHDL.libghdl._types import IirKind
# From nodes_meta
diff --git a/pyGHDL/libghdl/vhdl/tokens.py b/pyGHDL/libghdl/vhdl/tokens.py
index 87cc848b8..a846ea623 100644
--- a/pyGHDL/libghdl/vhdl/tokens.py
+++ b/pyGHDL/libghdl/vhdl/tokens.py
@@ -7,221 +7,223 @@ from pydecor import export
@export
class Tok:
Invalid = 0
- Left_Paren = 1
- Right_Paren = 2
- Left_Bracket = 3
- Right_Bracket = 4
- Colon = 5
- Semi_Colon = 6
- Comma = 7
- Double_Arrow = 8
- Tick = 9
- Double_Star = 10
- Assign = 11
- Bar = 12
- Box = 13
- Dot = 14
- Equal_Equal = 15
- Eof = 16
- Newline = 17
- Line_Comment = 18
- Block_Comment = 19
- Character = 20
- Identifier = 21
- Integer = 22
- Real = 23
- String = 24
- Bit_String = 25
- Integer_Letter = 26
- Equal = 27
- Not_Equal = 28
- Less = 29
- Less_Equal = 30
- Greater = 31
- Greater_Equal = 32
- Match_Equal = 33
- Match_Not_Equal = 34
- Match_Less = 35
- Match_Less_Equal = 36
- Match_Greater = 37
- Match_Greater_Equal = 38
- Plus = 39
- Minus = 40
- Ampersand = 41
- Condition = 42
- Double_Less = 43
- Double_Greater = 44
- Caret = 45
- And_And = 46
- Bar_Bar = 47
- Left_Curly = 48
- Right_Curly = 49
- Exclam_Mark = 50
- Brack_Star = 51
- Brack_Plus_Brack = 52
- Brack_Arrow = 53
- Brack_Equal = 54
- Bar_Arrow = 55
- Bar_Double_Arrow = 56
- Minus_Greater = 57
- Equiv_Arrow = 58
- Arobase = 59
- Star = 60
- Slash = 61
- Mod = 62
- Rem = 63
- Abs = 64
- Not = 65
- Access = 66
- After = 67
- Alias = 68
- All = 69
- Architecture = 70
- Array = 71
- Assert = 72
- Attribute = 73
- Begin = 74
- Block = 75
- Body = 76
- Buffer = 77
- Bus = 78
- Case = 79
- Component = 80
- Configuration = 81
- Constant = 82
- Disconnect = 83
- Downto = 84
- Else = 85
- Elsif = 86
- End = 87
- Entity = 88
- Exit = 89
- File = 90
- For = 91
- Function = 92
- Generate = 93
- Generic = 94
- Guarded = 95
- If = 96
- In = 97
- Inout = 98
- Is = 99
- Label = 100
- Library = 101
- Linkage = 102
- Loop = 103
- Map = 104
- New = 105
- Next = 106
- Null = 107
- Of = 108
- On = 109
- Open = 110
- Others = 111
- Out = 112
- Package = 113
- Port = 114
- Procedure = 115
- Process = 116
- Range = 117
- Record = 118
- Register = 119
- Report = 120
- Return = 121
- Select = 122
- Severity = 123
- Signal = 124
- Subtype = 125
- Then = 126
- To = 127
- Transport = 128
- Type = 129
- Units = 130
- Until = 131
- Use = 132
- Variable = 133
- Wait = 134
- When = 135
- While = 136
- With = 137
- And = 138
- Or = 139
- Xor = 140
- Nand = 141
- Nor = 142
- Xnor = 143
- Group = 144
- Impure = 145
- Inertial = 146
- Literal = 147
- Postponed = 148
- Pure = 149
- Reject = 150
- Shared = 151
- Unaffected = 152
- Sll = 153
- Sla = 154
- Sra = 155
- Srl = 156
- Rol = 157
- Ror = 158
- Protected = 159
- Assume = 160
- Context = 161
- Cover = 162
- Default = 163
- Force = 164
- Parameter = 165
- Property = 166
- Release = 167
- Restrict = 168
- Restrict_Guarantee = 169
- Sequence = 170
- Vmode = 171
- Vprop = 172
- Vunit = 173
- Across = 174
- Break = 175
- Limit = 176
- Nature = 177
- Noise = 178
- Procedural = 179
- Quantity = 180
- Reference = 181
- Spectrum = 182
- Subnature = 183
- Terminal = 184
- Through = 185
- Tolerance = 186
- Psl_Clock = 187
- Psl_Endpoint = 188
- Psl_Const = 189
- Psl_Boolean = 190
- Inf = 191
- Within = 192
- Abort = 193
- Before = 194
- Before_Em = 195
- Before_Un = 196
- Before_Em_Un = 197
- Always = 198
- Never = 199
- Eventually_Em = 200
- Next_Em = 201
- Next_A = 202
- Next_A_Em = 203
- Next_E = 204
- Next_E_Em = 205
- Next_Event = 206
- Next_Event_Em = 207
- Next_Event_A = 208
- Next_Event_A_Em = 209
- Next_Event_E = 210
- Next_Event_E_Em = 211
- Until_Em = 212
- Until_Un = 213
- Until_Em_Un = 214
- Prev = 215
- Stable = 216
- Fell = 217
- Rose = 218
+ Eof = 1
+ Newline = 2
+ Block_Comment_Start = 3
+ Block_Comment_End = 4
+ Block_Comment_Text = 5
+ Line_Comment = 6
+ Character = 7
+ Identifier = 8
+ Integer = 9
+ Real = 10
+ String = 11
+ Bit_String = 12
+ Integer_Letter = 13
+ Left_Paren = 14
+ Right_Paren = 15
+ Left_Bracket = 16
+ Right_Bracket = 17
+ Colon = 18
+ Semi_Colon = 19
+ Comma = 20
+ Double_Arrow = 21
+ Tick = 22
+ Double_Star = 23
+ Assign = 24
+ Bar = 25
+ Box = 26
+ Dot = 27
+ Equal_Equal = 28
+ Equal = 29
+ Not_Equal = 30
+ Less = 31
+ Less_Equal = 32
+ Greater = 33
+ Greater_Equal = 34
+ Match_Equal = 35
+ Match_Not_Equal = 36
+ Match_Less = 37
+ Match_Less_Equal = 38
+ Match_Greater = 39
+ Match_Greater_Equal = 40
+ Plus = 41
+ Minus = 42
+ Ampersand = 43
+ Condition = 44
+ Double_Less = 45
+ Double_Greater = 46
+ Caret = 47
+ And_And = 48
+ Bar_Bar = 49
+ Left_Curly = 50
+ Right_Curly = 51
+ Exclam_Mark = 52
+ Brack_Star = 53
+ Brack_Plus_Brack = 54
+ Brack_Arrow = 55
+ Brack_Equal = 56
+ Bar_Arrow = 57
+ Bar_Double_Arrow = 58
+ Minus_Greater = 59
+ Equiv_Arrow = 60
+ Arobase = 61
+ Star = 62
+ Slash = 63
+ Mod = 64
+ Rem = 65
+ Abs = 66
+ Not = 67
+ Access = 68
+ After = 69
+ Alias = 70
+ All = 71
+ Architecture = 72
+ Array = 73
+ Assert = 74
+ Attribute = 75
+ Begin = 76
+ Block = 77
+ Body = 78
+ Buffer = 79
+ Bus = 80
+ Case = 81
+ Component = 82
+ Configuration = 83
+ Constant = 84
+ Disconnect = 85
+ Downto = 86
+ Else = 87
+ Elsif = 88
+ End = 89
+ Entity = 90
+ Exit = 91
+ File = 92
+ For = 93
+ Function = 94
+ Generate = 95
+ Generic = 96
+ Guarded = 97
+ If = 98
+ In = 99
+ Inout = 100
+ Is = 101
+ Label = 102
+ Library = 103
+ Linkage = 104
+ Loop = 105
+ Map = 106
+ New = 107
+ Next = 108
+ Null = 109
+ Of = 110
+ On = 111
+ Open = 112
+ Others = 113
+ Out = 114
+ Package = 115
+ Port = 116
+ Procedure = 117
+ Process = 118
+ Range = 119
+ Record = 120
+ Register = 121
+ Report = 122
+ Return = 123
+ Select = 124
+ Severity = 125
+ Signal = 126
+ Subtype = 127
+ Then = 128
+ To = 129
+ Transport = 130
+ Type = 131
+ Units = 132
+ Until = 133
+ Use = 134
+ Variable = 135
+ Wait = 136
+ When = 137
+ While = 138
+ With = 139
+ And = 140
+ Or = 141
+ Xor = 142
+ Nand = 143
+ Nor = 144
+ Xnor = 145
+ Group = 146
+ Impure = 147
+ Inertial = 148
+ Literal = 149
+ Postponed = 150
+ Pure = 151
+ Reject = 152
+ Shared = 153
+ Unaffected = 154
+ Sll = 155
+ Sla = 156
+ Sra = 157
+ Srl = 158
+ Rol = 159
+ Ror = 160
+ Protected = 161
+ Assume = 162
+ Context = 163
+ Cover = 164
+ Default = 165
+ Force = 166
+ Parameter = 167
+ Property = 168
+ Release = 169
+ Restrict = 170
+ Restrict_Guarantee = 171
+ Sequence = 172
+ Vmode = 173
+ Vprop = 174
+ Vunit = 175
+ Across = 176
+ Break = 177
+ Limit = 178
+ Nature = 179
+ Noise = 180
+ Procedural = 181
+ Quantity = 182
+ Reference = 183
+ Spectrum = 184
+ Subnature = 185
+ Terminal = 186
+ Through = 187
+ Tolerance = 188
+ Psl_Clock = 189
+ Psl_Endpoint = 190
+ Psl_Const = 191
+ Psl_Boolean = 192
+ Inf = 193
+ Within = 194
+ Abort = 195
+ Before = 196
+ Before_Em = 197
+ Before_Un = 198
+ Before_Em_Un = 199
+ Always = 200
+ Never = 201
+ Eventually_Em = 202
+ Next_Em = 203
+ Next_A = 204
+ Next_A_Em = 205
+ Next_E = 206
+ Next_E_Em = 207
+ Next_Event = 208
+ Next_Event_Em = 209
+ Next_Event_A = 210
+ Next_Event_A_Em = 211
+ Next_Event_E = 212
+ Next_Event_E_Em = 213
+ Until_Em = 214
+ Until_Un = 215
+ Until_Em_Un = 216
+ Prev = 217
+ Stable = 218
+ Fell = 219
+ Rose = 220
diff --git a/src/std_names.adb b/src/std_names.adb
index 26eb53b84..4def79432 100644
--- a/src/std_names.adb
+++ b/src/std_names.adb
@@ -682,6 +682,7 @@ package body Std_Names is
Def ("allseq", Name_Allseq);
Def ("anyconst", Name_Anyconst);
Def ("anyseq", Name_Anyseq);
+ Def ("gclk", Name_Gclk);
-- Verilog directives
Def ("define", Name_Define);
diff --git a/src/std_names.ads b/src/std_names.ads
index 36fdbf249..2a7fc8dc0 100644
--- a/src/std_names.ads
+++ b/src/std_names.ads
@@ -767,7 +767,8 @@ package Std_Names is
Name_Allseq : constant Name_Id := Name_First_Synthesis + 001;
Name_Anyconst : constant Name_Id := Name_First_Synthesis + 002;
Name_Anyseq : constant Name_Id := Name_First_Synthesis + 003;
- Name_Last_Synthesis : constant Name_Id := Name_Anyseq;
+ Name_Gclk : constant Name_Id := Name_First_Synthesis + 004;
+ Name_Last_Synthesis : constant Name_Id := Name_Gclk;
-- Verilog Directives.
Name_First_Directive : constant Name_Id := Name_Last_Synthesis + 1;
diff --git a/src/synth/ghdlsynth.h b/src/synth/ghdlsynth.h
index 90c4f15f0..abbb68f77 100644
--- a/src/synth/ghdlsynth.h
+++ b/src/synth/ghdlsynth.h
@@ -72,6 +72,13 @@ namespace GhdlSynth {
return name_table__get_address (n.id);
}
+ extern "C" unsigned name_table__get_identifier_with_len(const char *s, unsigned l);
+ inline Name_Id get_identifier(const char *s) {
+ Name_Id n;
+ n.id = name_table__get_identifier_with_len(s, strlen(s));
+ return n;
+ }
+
struct Sname { unsigned int id; };
const Sname No_Sname = {0 };
diff --git a/src/synth/netlists.ads b/src/synth/netlists.ads
index 5ef74a77d..93bf8b1d3 100644
--- a/src/synth/netlists.ads
+++ b/src/synth/netlists.ads
@@ -397,6 +397,8 @@ private
function Attribute_Build (Params : Instance) return Instance;
function Attribute_Build_Value (Obj : Instance) return Attribute;
+ -- Per instance map of attribute.
+ -- The index is the sub-instance, the value is the attribute chain.
package Attribute_Maps is new Dyn_Maps
(Params_Type => Instance,
Object_Type => Instance,