2019-03-05 00:25:14 +01:00
|
|
|
{- sv2v
|
|
|
|
|
- Author: Zachary Snow <zach@zachjs.com>
|
|
|
|
|
-
|
2019-12-02 05:25:33 +01:00
|
|
|
- Conversion for `unique`, `unique0`, and `priority` (verification checks)
|
2019-03-05 00:25:14 +01:00
|
|
|
-
|
2019-12-02 05:25:33 +01:00
|
|
|
- This conversion simply drops these keywords, as they are only used for
|
|
|
|
|
- optimization and verification. There may be ways to communicate these
|
|
|
|
|
- attributes to certain downstream toolchains.
|
2019-03-05 00:25:14 +01:00
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
module Convert.Unique (convert) where
|
|
|
|
|
|
|
|
|
|
import Convert.Traverse
|
|
|
|
|
import Language.SystemVerilog.AST
|
|
|
|
|
|
2019-04-24 00:44:45 +02:00
|
|
|
convert :: [AST] -> [AST]
|
|
|
|
|
convert =
|
|
|
|
|
map $ traverseDescriptions $ traverseModuleItems $ traverseStmts convertStmt
|
2019-03-05 00:25:14 +01:00
|
|
|
|
|
|
|
|
convertStmt :: Stmt -> Stmt
|
2019-12-02 05:25:33 +01:00
|
|
|
convertStmt (If _ cc s1 s2) =
|
|
|
|
|
If NoCheck cc s1 s2
|
|
|
|
|
convertStmt (Case _ kw expr cases) =
|
|
|
|
|
Case NoCheck kw expr cases
|
2019-03-05 00:25:14 +01:00
|
|
|
convertStmt other = other
|