AlwaysKW.hs 751 Bytes
Newer Older
1 2 3
{- sv2v
 - Author: Zachary Snow <zach@zachjs.com>
 -
4
 - Conversion for `always_latch`, `always_comb`, and `always_ff`
5
 -
6
 - `always_latch` -> `always @*`
7 8
 - `always_comb` -> `always @*`
 - `always_ff` -> `always`
9 10 11 12
 -}

module Convert.AlwaysKW (convert) where

13
import Convert.Traverse
14 15
import Language.SystemVerilog.AST

16 17
convert :: [AST] -> [AST]
convert = map $ traverseDescriptions $ traverseModuleItems replaceAlwaysKW
18

19
replaceAlwaysKW :: ModuleItem -> ModuleItem
20 21
replaceAlwaysKW (AlwaysC AlwaysLatch stmt) =
    AlwaysC Always $ Timing (Event SenseStar) stmt
22
replaceAlwaysKW (AlwaysC AlwaysComb stmt) =
23
    AlwaysC Always $ Timing (Event SenseStar) stmt
24
replaceAlwaysKW (AlwaysC AlwaysFF stmt) =
25
    AlwaysC Always stmt
26
replaceAlwaysKW other = other