Hoogle Search

Within LTS Haskell 24.40 (ghc-9.10.3)

Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.

  1. lockStep :: forall (dom :: Domain) . LockStep a b => DataFlow dom a Bool b b

    clash-prelude Clash.Prelude.DataFlow

    Reduce the synchronization granularity to a single Boolean value. Given:

    f :: DataFlow Bool Bool a b
    g :: DataFlow Bool Bool c d
    h :: DataFlow Bool Bool (b,d) (p,q)
    
    We cannot simply write:
    (f `parDF` g) `seqDF` h
    
    because, f `parDF` g, has type, DataFlow (Bool,Bool) (Bool,Bool) (a,c) (b,d), which does not match the expected synchronization granularity of h. We need a circuit in between that has the type:
    DataFlow (Bool,Bool) Bool (b,d) (b,d)
    
    Simply &&-ing the valid signals in the forward direction, and duplicating the ready signal in the backward direction is however not enough. We also need to make sure that f does not update its output when g's output is invalid and visa versa, as h can only consume its input when both f and g are producing valid data. g's ready port is hence only asserted when h is ready and f is producing valid data. And f's ready port is only asserted when h is ready and g is producing valid data. f and g will hence be proceeding in lock-step. The lockStep function ensures that all synchronization signals are properly connected:
    (f `parDF` g) `seqDF` lockStep `seqDF` h
    
    Note 1: ensure that the components that you are synchronizing have buffered/delayed ready and valid signals, or lockStep has the potential to introduce combinational loops. You can do this by placing fifoDFs on the parallel channels. Extending the above example, you would write:
    ((f `seqDF` fifoDF d4 Nil) `parDF` (g `seqDF` fifoDF d4 Nil)) `seqDF` lockStep `seqDF` h
    
    Note 2: lockStep works for arbitrarily nested tuples. That is:
    p :: DataFlow Bool Bool ((b,d),d) z
    
    q :: DataFlow ((Bool,Bool),Bool) ((Bool,Bool),Bool) ((a,c),c) ((b,d),d)
    q = f `parDF` g `parDF` g
    
    r = q `seqDF` lockStep `seqDF` p
    
    Does the right thing.

  2. expandBFStepped :: (Int, Int) -> BaseField -> Int -> Maybe EField

    cron System.Cron.Internal.Check

    No documentation available.

  3. mkStepField :: BaseField -> Int -> Maybe StepField

    cron System.Cron.Types

    No documentation available.

  4. sfStepping :: StepField -> Int

    cron System.Cron.Types

    No documentation available.

  5. data BackupStepResult

    direct-sqlite Database.SQLite3

    No documentation available.

  6. backupStep :: Backup -> Int -> IO BackupStepResult

    direct-sqlite Database.SQLite3

    No documentation available.

  7. c_sqlite3_backup_step :: Ptr CBackup -> CInt -> IO CError

    direct-sqlite Database.SQLite3.Bindings

    https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep

  8. c_sqlite3_step :: Ptr CStatement -> IO CError

    direct-sqlite Database.SQLite3.Bindings

    https://www.sqlite.org/c3ref/step.html

  9. c_sqlite3_step_unsafe :: Ptr CStatement -> IO CError

    direct-sqlite Database.SQLite3.Bindings

    https://www.sqlite.org/c3ref/step.html

  10. data BackupStepResult

    direct-sqlite Database.SQLite3.Direct

    No documentation available.

Page 58 of many | Previous | Next