diff options
| author | azidar | 2015-05-15 16:34:34 -0700 |
|---|---|---|
| committer | azidar | 2015-05-15 16:34:34 -0700 |
| commit | 2702e571040e7a07317b79f9c5cfdbd61b9ab2bf (patch) | |
| tree | 0e5973d175be18851865b712e16871764157889f /src/main/stanza/errors.stanza | |
| parent | 521a4277bfc1d764dc9ee771c604200525e871cb (diff) | |
Updated firrtl for its passes to be a bit more modular, and to enable plugging in other backends. Also updated a lot of tests, but not all of them because its annoying.
Diffstat (limited to 'src/main/stanza/errors.stanza')
| -rw-r--r-- | src/main/stanza/errors.stanza | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main/stanza/errors.stanza b/src/main/stanza/errors.stanza index 30414afd..06c09522 100644 --- a/src/main/stanza/errors.stanza +++ b/src/main/stanza/errors.stanza @@ -15,12 +15,6 @@ defpackage firrtl/errors : ; * Only modules in circuit (no statements or expressions) <- parser ; * Module must be a reference in inst declaration -;AFTER GENDER INFERENCE -; o Nodes always male -; o Accessors only have one gender, unless rdwr -; o output/input only one gender -; o correctly check for the base bundle - ;AFTER WIDTH INFERENCE ; o No names ; o No Unknowns @@ -50,6 +44,10 @@ defpackage firrtl/errors : ; * all references are declared ; * UInt only has positive ints +public defstruct CheckHighForm <: Pass +public defmethod pass (b:CheckHighForm) -> (Circuit -> Circuit) : check-high-form +public defmethod name (b:CheckHighForm) -> String : "High Form Check" + ;----------------- Errors ------------------------ defn NotUnique (info:FileInfo, name:Symbol) : PassException $ string-join $ @@ -226,6 +224,10 @@ public defn check-high-form (c:Circuit) -> Circuit : ; o onreset can only handle a register ; o Cannot use a mem in anything except an accessor, Readport, or Writeport +public defstruct CheckKinds <: Pass +public defmethod pass (b:CheckKinds) -> (Circuit -> Circuit) : check-kinds +public defmethod name (b:CheckKinds) -> String : "Check Kinds" + ;----------------- Errors --------------------- defn NotMem (info:FileInfo, name:Symbol) : PassException $ string-join $ @@ -311,6 +313,10 @@ public defn check-kinds (c:Circuit) -> Circuit : ; o := has same types ; o 2nd arg in dshr/l must be UInt, in general do primops +public defstruct CheckTypes <: Pass +public defmethod pass (b:CheckTypes) -> (Circuit -> Circuit) : check-types +public defmethod name (b:CheckTypes) -> String : "Check Types" + ;----------------- Errors --------------------- defn SubfieldNotInBundle (info:FileInfo, name:Symbol) : PassException $ string-join $ @@ -421,6 +427,10 @@ public defn check-types (c:Circuit) -> Circuit : ; o output/input only one gender ; o correctly check for the base bundle +public defstruct CheckGenders <: Pass +public defmethod pass (b:CheckGenders) -> (Circuit -> Circuit) : check-genders +public defmethod name (b:CheckGenders) -> String : "Check Genders" + ;----------------- Errors --------------------- defn WrongGender (info:FileInfo,expr:Symbol,wrong:Symbol,right:Symbol) : PassException $ string-join $ |
