diff --git a/.github/scripts/cache.py b/.github/scripts/cache.py index 6c32afc20..48e270ca1 100755 --- a/.github/scripts/cache.py +++ b/.github/scripts/cache.py @@ -52,7 +52,7 @@ CLEAR_AFTER=f"{CLEAR_AFTER_DAYS}d00h00m00s" TOUCH_AFTER=datetime.timedelta(days=1) -GLOBAL_CACHE_BUST = 2 +GLOBAL_CACHE_BUST = 3 CARGO_CACHE_BUST = 2 CARGO_KEY_PREFIX = f"cargo-g{GLOBAL_CACHE_BUST}-l{CARGO_CACHE_BUST}-" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5dca769f4..5e30bdc9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,7 @@ jobs: run: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: - name: Checkout @@ -80,7 +80,7 @@ jobs: shell: git-nix-shell {0} --option connect-timeout 360 container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -114,6 +114,10 @@ jobs: .github/scripts/cabal-gild.sh check git diff --exit-code + - name: Check that we don't introduce accidental infinite loops in type checkers + run: | + ! grep --include=*.hs -E -r '\-fconstraint-solver-iterations *= *0' + build: name: Build dependencies runs-on: [self-hosted, compute] @@ -122,7 +126,7 @@ jobs: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -162,7 +166,7 @@ jobs: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_OUTPUT" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -202,7 +206,7 @@ jobs: fail-fast: false container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -252,7 +256,7 @@ jobs: needs: [build, lint, cc-sim-topologies-matrix, cc-sim-topologies, bittide-instances-hardware-in-the-loop] container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -325,7 +329,7 @@ jobs: needs: [build, lint] container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -352,7 +356,7 @@ jobs: needs: [build, lint] container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -393,7 +397,7 @@ jobs: run: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g needs: [build] @@ -418,7 +422,7 @@ jobs: run: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g needs: [build] @@ -446,7 +450,7 @@ jobs: run: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g needs: [build] @@ -472,7 +476,7 @@ jobs: run: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_SHA" --keep "S3_PASSWORD" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g needs: [build] @@ -505,7 +509,7 @@ jobs: needs: [build, lint] container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -532,7 +536,7 @@ jobs: needs: [build, lint] container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -558,7 +562,7 @@ jobs: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_OUTPUT" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -591,7 +595,7 @@ jobs: shell: git-nix-shell {0} --option connect-timeout 360 --pure --keep "GITHUB_OUTPUT" container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 options: --memory=11g steps: @@ -634,7 +638,7 @@ jobs: fail-fast: false container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 volumes: - /opt/tools:/opt/tools options: --init --mac-address="6c:5a:b0:6c:13:0b" --memory=11g @@ -714,7 +718,7 @@ jobs: fail-fast: false container: - image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-07-30 + image: ghcr.io/clash-lang/nixos-bittide-hardware:2024-08-06 volumes: - /opt/tools:/opt/tools - /dev:/dev diff --git a/bittide-instances/src/Bittide/Instances/Domains.hs b/bittide-instances/src/Bittide/Instances/Domains.hs index ebd4e82bd..fcc835497 100644 --- a/bittide-instances/src/Bittide/Instances/Domains.hs +++ b/bittide-instances/src/Bittide/Instances/Domains.hs @@ -6,7 +6,7 @@ module Bittide.Instances.Domains where -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import Bittide.ClockControl import Bittide.Arithmetic.Time diff --git a/bittide-instances/src/Bittide/Instances/Hitl/FincFdec.hs b/bittide-instances/src/Bittide/Instances/Hitl/FincFdec.hs index 77eedc17b..54e22f1f4 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/FincFdec.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/FincFdec.hs @@ -15,7 +15,6 @@ import Clash.Explicit.Prelude import Clash.Prelude (withClockResetEnable) import Clash.Xilinx.ClockGen (clockWizardDifferential) -import Bittide.Arithmetic.Time import Bittide.Counter (domainDiffCounter) import Bittide.ClockControl (SpeedChange(NoChange, SlowDown, SpeedUp), speedChangeToFincFdec) import Bittide.ClockControl.Si539xSpi (si539xSpi, ConfigState(Finished)) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/FullMeshHwCc.hs b/bittide-instances/src/Bittide/Instances/Hitl/FullMeshHwCc.hs index 341aae033..e70243406 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/FullMeshHwCc.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/FullMeshHwCc.hs @@ -33,7 +33,7 @@ module Bittide.Instances.Hitl.FullMeshHwCc ) where import Clash.Prelude (withClockResetEnable) -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import qualified Clash.Explicit.Prelude as E import Data.Maybe (fromMaybe) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/FullMeshSwCc.hs b/bittide-instances/src/Bittide/Instances/Hitl/FullMeshSwCc.hs index 43851e296..07dc1df3a 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/FullMeshSwCc.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/FullMeshSwCc.hs @@ -1,11 +1,12 @@ -- SPDX-FileCopyrightText: 2023-2024 Google LLC -- -- SPDX-License-Identifier: Apache-2.0 +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NumericUnderscores #-} +{-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE OverloadedRecordDot #-} -{-# LANGUAGE NamedFieldPuns #-} {-# OPTIONS_GHC -fplugin=Protocols.Plugin #-} {-# OPTIONS_GHC -fconstraint-solver-iterations=20 #-} @@ -33,7 +34,7 @@ module Bittide.Instances.Hitl.FullMeshSwCc import qualified Prelude as P import Clash.Prelude (withClockResetEnable) -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import qualified Clash.Explicit.Prelude as E import Data.Maybe (fromMaybe) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/HwCcTopologies.hs b/bittide-instances/src/Bittide/Instances/Hitl/HwCcTopologies.hs index 9c784dcdd..d87cb4dad 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/HwCcTopologies.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/HwCcTopologies.hs @@ -34,7 +34,7 @@ module Bittide.Instances.Hitl.HwCcTopologies ) where import Clash.Prelude (withClockResetEnable) -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import qualified Clash.Explicit.Prelude as E import Data.Bifunctor (bimap) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/IlaPlot.hs b/bittide-instances/src/Bittide/Instances/Hitl/IlaPlot.hs index 005495440..a86b537dd 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/IlaPlot.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/IlaPlot.hs @@ -47,11 +47,11 @@ module Bittide.Instances.Hitl.IlaPlot import GHC.Stack (HasCallStack) -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import Clash.Explicit.Signal.Extra import Clash.Sized.Extra (concatUnsigneds) -import Bittide.Arithmetic.Time (Seconds, Milliseconds, PeriodToCycles, trueFor) +import Bittide.Arithmetic.Time (PeriodToCycles, trueFor) import Bittide.ClockControl (SpeedChange(..), RelDataCount, ClockControlConfig) import Bittide.ClockControl.Callisto (CallistoResult(..), ReframingState(..), callistoClockControl) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/SyncInSyncOut.hs b/bittide-instances/src/Bittide/Instances/Hitl/SyncInSyncOut.hs index 3641f52bd..7a9e1d3ae 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/SyncInSyncOut.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/SyncInSyncOut.hs @@ -62,7 +62,7 @@ -- module Bittide.Instances.Hitl.SyncInSyncOut where -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import Bittide.Arithmetic.Time import Bittide.Hitl (HitlTests, allFpgas, hitlVioBool, noConfigTest) diff --git a/bittide-instances/src/Bittide/Instances/Pnr/Si539xSpi.hs b/bittide-instances/src/Bittide/Instances/Pnr/Si539xSpi.hs index a70d7ca29..811b36d65 100644 --- a/bittide-instances/src/Bittide/Instances/Pnr/Si539xSpi.hs +++ b/bittide-instances/src/Bittide/Instances/Pnr/Si539xSpi.hs @@ -11,7 +11,6 @@ import Clash.Prelude import Clash.Annotations.TH (makeTopEntity) -import Bittide.Arithmetic.Time import Bittide.ClockControl import Bittide.ClockControl.Callisto import Bittide.ClockControl.Si5395J diff --git a/bittide/src/Bittide/Arithmetic/Time.hs b/bittide/src/Bittide/Arithmetic/Time.hs index 0ff44d2b9..40f93eeec 100644 --- a/bittide/src/Bittide/Arithmetic/Time.hs +++ b/bittide/src/Bittide/Arithmetic/Time.hs @@ -2,44 +2,51 @@ -- -- SPDX-License-Identifier: Apache-2.0 {-# LANGUAGE FlexibleInstances,MultiParamTypeClasses,TemplateHaskell #-} +{-# LANGUAGE NumericUnderscores #-} {-# OPTIONS_GHC -Wno-orphans #-} module Bittide.Arithmetic.Time where import GHC.Stack (HasCallStack) -import Clash.Explicit.Prelude hiding (natVal) +import Clash.Explicit.Prelude hiding (natVal, PeriodToCycles) import Clash.Class.Counter (countSucc, Counter) import Clash.Signal.Internal (Femtoseconds (Femtoseconds), mapFemtoseconds) -import Data.Data (Proxy(Proxy)) +import Data.Data (Proxy(..)) import Data.Int (Int64) import Data.Kind (Type) import GHC.TypeNats (natVal) import GHC.TypeLits.KnownNat (KnownNat1 (..),SNatKn(..), nameToSymbol) --- | Gets time in 'Picoseconds' from time in 'Seconds'. -type Seconds (s :: Nat) = Milliseconds (1000 * s) --- | Gets time in 'Picoseconds' from time in 'Milliseconds'. -type Milliseconds (ms :: Nat) = Microseconds (1000 * ms) --- | Gets time in 'Picoseconds' from time in 'Microseconds'. -type Microseconds (us :: Nat) = Nanoseconds (1000 * us) --- | Gets time in 'Picoseconds' from time in 'Nanoseconds'. -type Nanoseconds (ns :: Nat) = Picoseconds (1000 * ns) --- | Gets time in 'Picoseconds' from time in 'Picoseconds', essentially 'id'. -type Picoseconds (ps :: Nat) = ps - --- Make ghc-typelits-knownnat look through the Picoseconds type alias +-- | XXX: We currently retain this in favor of @clash-prelude@s 'PeriodToCycles' +-- until @1 <= DomainPeriod dom@ is trivially true. Related issue: +-- https://github.com/clash-lang/ghc-typelits-extra/issues/56 +-- +--Number of clock cycles required at the clock frequency of @dom@ before a minimum @period@ has passed. +-- Is always at least one. +type PeriodToCycles dom period = Max 1 (DivRU period (Max 1 (DomainPeriod dom))) + +-- Make ghc-typelits-knownnat look through time related type aliases. +-- https://github.com/clash-lang/ghc-typelits-knownnat/issues/53 instance (KnownNat ps) => KnownNat1 $(nameToSymbol ''Picoseconds) ps where natSing1 = SNatKn (natVal (Proxy @ps)) {-# NOINLINE natSing1 #-} --- | Number of clock cycles required at the clock frequency of @dom@ before a minimum @period@ has passed. --- Is always at least one. -type PeriodToCycles dom period = Max 1 (DivRU period (Max 1 (DomainPeriod dom))) +instance (KnownNat ps) => KnownNat1 $(nameToSymbol ''Nanoseconds) ps where + natSing1 = SNatKn (natVal (Proxy @(1_000 * ps))) + {-# NOINLINE natSing1 #-} + +instance (KnownNat ps) => KnownNat1 $(nameToSymbol ''Microseconds) ps where + natSing1 = SNatKn (natVal (Proxy @(1_000_000 * ps))) + {-# NOINLINE natSing1 #-} --- | The domain's clock frequency in Hertz, calculated based on the period stored in ps. --- This might lead to rounding errors. -type DomainFrequency dom = Div (Seconds 1) (DomainPeriod dom) +instance (KnownNat ps) => KnownNat1 $(nameToSymbol ''Milliseconds) ps where + natSing1 = SNatKn (natVal (Proxy @(1_000_000_000 * ps))) + {-# NOINLINE natSing1 #-} + +instance (KnownNat ps) => KnownNat1 $(nameToSymbol ''Seconds) ps where + natSing1 = SNatKn (natVal (Proxy @(1_000_000_000_000 * ps))) + {-# NOINLINE natSing1 #-} -- | 'Index' with its 'maxBound' corresponding to the number of cycles needed to -- wait for /n/ milliseconds. diff --git a/bittide/src/Bittide/ClockControl.hs b/bittide/src/Bittide/ClockControl.hs index e2d1970e3..63a9809bb 100644 --- a/bittide/src/Bittide/ClockControl.hs +++ b/bittide/src/Bittide/ClockControl.hs @@ -22,7 +22,7 @@ module Bittide.ClockControl ) where -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import Clash.Signal.Internal (Femtoseconds(..)) import Data.Aeson (ToJSON(toJSON)) import Data.Proxy (Proxy(..)) @@ -32,7 +32,7 @@ import Foreign.Storable (Storable(..)) import GHC.Stack (HasCallStack) import Bittide.Arithmetic.Ppm -import Bittide.Arithmetic.Time (PeriodToCycles, Nanoseconds, Microseconds, microseconds) +import Bittide.Arithmetic.Time (PeriodToCycles, microseconds) import Bittide.ClockControl.Foreign.Sizes import Data.Csv diff --git a/bittide/src/Bittide/ClockControl/Si539xSpi.hs b/bittide/src/Bittide/ClockControl/Si539xSpi.hs index 0a16dc551..723af2101 100644 --- a/bittide/src/Bittide/ClockControl/Si539xSpi.hs +++ b/bittide/src/Bittide/ClockControl/Si539xSpi.hs @@ -11,7 +11,7 @@ module Bittide.ClockControl.Si539xSpi where -import Clash.Prelude +import Clash.Prelude hiding (PeriodToCycles) import Clash.Cores.SPI import Data.Maybe diff --git a/bittide/src/Bittide/Transceiver.hs b/bittide/src/Bittide/Transceiver.hs index 74a847f66..6a17f027c 100644 --- a/bittide/src/Bittide/Transceiver.hs +++ b/bittide/src/Bittide/Transceiver.hs @@ -89,7 +89,7 @@ module Bittide.Transceiver where import Clash.Explicit.Prelude -import Bittide.Arithmetic.Time (Milliseconds, trueForSteps) +import Bittide.Arithmetic.Time (trueForSteps) import Bittide.ElasticBuffer (sticky) import Clash.Cores.Xilinx.GTH (GthCore) import Clash.Cores.Xilinx.Ila (IlaConfig(advancedTriggers, depth, stages), ilaConfig, ila, Depth(D1024)) diff --git a/bittide/src/Bittide/Wishbone.hs b/bittide/src/Bittide/Wishbone.hs index 8fc276379..bcf382cf2 100644 --- a/bittide/src/Bittide/Wishbone.hs +++ b/bittide/src/Bittide/Wishbone.hs @@ -11,7 +11,6 @@ module Bittide.Wishbone where import Clash.Prelude -import Bittide.Arithmetic.Time(DomainFrequency) import Bittide.DoubleBufferedRam import Bittide.SharedTypes @@ -467,7 +466,7 @@ timeWb = Circuit $ \(wbM2S, _) -> (mealy goMealy (0,0) wbM2S, ()) where goMealy (frozen, count :: Unsigned 64) wbM2S = ((nextFrozen, succ count), wbS2M) where - freq = natToNum @(DomainFrequency dom) :: Unsigned 64 + freq = natToNum @(DomainToHz dom) :: Unsigned 64 nextFrozen = if isJust (head writes) then count else frozen RegisterBank (splitAtI -> (frozenMsbs, frozenLsbs)) = getRegsBe @8 frozen RegisterBank (splitAtI -> (freqMsbs, freqLsbs)) = getRegsBe @8 freq diff --git a/bittide/src/Clash/Cores/UART/Extra.hs b/bittide/src/Clash/Cores/UART/Extra.hs index cf9e5c49a..6066fa0c6 100644 --- a/bittide/src/Clash/Cores/UART/Extra.hs +++ b/bittide/src/Clash/Cores/UART/Extra.hs @@ -20,13 +20,12 @@ import Protocols import Protocols.Df hiding (catMaybes, sample, pure) import System.IO -import Bittide.Arithmetic.Time import Bittide.Wishbone import qualified Protocols.Df as Df -- | The maximum baud rate for a given domain, useful for simulation purposes -type MaxBaudRate dom = Div (DomainFrequency dom) 16 +type MaxBaudRate dom = Div (DomainToHz dom) 16 -- | A simulation function for circuits that expose a UART connection. -- This function reads from the provided input handle and feeds that to the UART circuit. diff --git a/bittide/tests/Tests/Axi4.hs b/bittide/tests/Tests/Axi4.hs index bf1b2d37b..458fa454b 100644 --- a/bittide/tests/Tests/Axi4.hs +++ b/bittide/tests/Tests/Axi4.hs @@ -8,7 +8,7 @@ {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} -{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-} +{-# OPTIONS_GHC -fconstraint-solver-iterations=10 #-} {-# HLINT ignore "Functor law" #-} {-# HLINT ignore "Used otherwise as a pattern" #-} diff --git a/bittide/tests/Tests/Transceiver.hs b/bittide/tests/Tests/Transceiver.hs index 19f0669c0..70d3aa974 100644 --- a/bittide/tests/Tests/Transceiver.hs +++ b/bittide/tests/Tests/Transceiver.hs @@ -11,11 +11,11 @@ module Tests.Transceiver where -import Clash.Explicit.Prelude +import Clash.Explicit.Prelude hiding (PeriodToCycles) import Clash.Prelude (withClock) import Hedgehog -import Bittide.Arithmetic.Time (PeriodToCycles, Microseconds, Milliseconds) +import Bittide.Arithmetic.Time (PeriodToCycles) import Bittide.SharedTypes (Bytes) import Clash.Annotations.Primitive (dontTranslate) import Clash.Cores.Xilinx.GTH (GthCore) diff --git a/cabal.project b/cabal.project index 917a2475e..6bc0381a5 100644 --- a/cabal.project +++ b/cabal.project @@ -14,8 +14,8 @@ write-ghc-environment-files: always -- index state, to go along with the cabal.project.freeze file. update the index -- state by running `cabal update` twice and looking at the index state it -- displays to you (as the second update will be a no-op) -index-state: 2023-12-05T05:33:28Z -with-compiler: ghc-9.4.8 +index-state: 2024-08-06T03:18:13Z +with-compiler: ghc-9.4.7 tests: True package bittide @@ -131,31 +131,31 @@ index-state: 2023-12-05T05:33:28Z source-repository-package type: git location: https://github.com/clash-lang/clash-compiler.git - tag: 9afc2262a66cbf98c7c157d5472cbb46d0016f7f + tag: 1d49cd2a528fe719beb3b2887dc440362b1b3574 subdir: clash-prelude source-repository-package type: git location: https://github.com/clash-lang/clash-compiler.git - tag: 9afc2262a66cbf98c7c157d5472cbb46d0016f7f + tag: 1d49cd2a528fe719beb3b2887dc440362b1b3574 subdir: clash-ghc source-repository-package type: git location: https://github.com/clash-lang/clash-compiler.git - tag: 9afc2262a66cbf98c7c157d5472cbb46d0016f7f + tag: 1d49cd2a528fe719beb3b2887dc440362b1b3574 subdir: clash-lib source-repository-package type: git location: https://github.com/clash-lang/clash-compiler.git - tag: 9afc2262a66cbf98c7c157d5472cbb46d0016f7f + tag: 1d49cd2a528fe719beb3b2887dc440362b1b3574 subdir: clash-prelude-hedgehog source-repository-package type: git location: https://github.com/clash-lang/clash-compiler.git - tag: 9afc2262a66cbf98c7c157d5472cbb46d0016f7f + tag: 1d49cd2a528fe719beb3b2887dc440362b1b3574 subdir: clash-cores source-repository-package diff --git a/cabal.project.freeze b/cabal.project.freeze index aef5e03b3..b2f47b35e 100644 --- a/cabal.project.freeze +++ b/cabal.project.freeze @@ -33,7 +33,7 @@ constraints: any.Cabal ==3.8.1.0, attoparsec -developer, any.attoparsec-aeson ==2.2.0.1, any.barbies ==2.0.5.0, - any.base ==4.17.2.1, + any.base ==4.17.2.0, any.base-compat ==0.13.1, any.base-orphans ==0.9.1, any.base16-bytestring ==1.0.2.0, @@ -50,7 +50,7 @@ constraints: any.Cabal ==3.8.1.0, any.boring ==0.2.1, boring +tagged, any.byteorder ==1.0.4, - any.bytestring ==0.11.5.3, + any.bytestring ==0.11.5.2, any.cabal-doctest ==1.0.9, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, @@ -69,7 +69,7 @@ constraints: any.Cabal ==3.8.1.0, any.clash-lib ==1.9.0, clash-lib -debug +doctests +unittests -workaround-ghc-mmap-crash, any.clash-prelude ==1.9.0, - clash-prelude +benchmarks +doctests -large-tuples -multiple-hidden -strict-mapsignal -super-strict +unittests -workaround-ghc-mmap-crash, + clash-prelude +benchmarks +doctests -large-tuples -strict-mapsignal -super-strict +unittests -workaround-ghc-mmap-crash, any.clash-prelude-hedgehog ==1.9.0, any.clash-protocols ==0.1, clash-protocols -ci -large-tuples, @@ -129,11 +129,11 @@ constraints: any.Cabal ==3.8.1.0, foldable1-classes-compat +tagged, any.free ==5.2, any.generically ==0.1.1, - any.ghc ==9.4.8, + any.ghc ==9.4.7, any.ghc-bignum ==1.3, - any.ghc-boot ==9.4.8, - any.ghc-boot-th ==9.4.8, - any.ghc-heap ==9.4.8, + any.ghc-boot ==9.4.7, + any.ghc-boot-th ==9.4.7, + any.ghc-heap ==9.4.7, any.ghc-paths ==0.1.0.12, any.ghc-prim ==0.9.1, any.ghc-tcplugins-extra ==0.4.5, @@ -144,7 +144,7 @@ constraints: any.Cabal ==3.8.1.0, ghc-typelits-knownnat -deverror, any.ghc-typelits-natnormalise ==0.7.9, ghc-typelits-natnormalise -deverror, - any.ghci ==9.4.8, + any.ghci ==9.4.7, any.half ==0.3.1, any.happy ==1.20.1.1, any.happy-dot ==1.0.0.0, @@ -221,7 +221,7 @@ constraints: any.Cabal ==3.8.1.0, any.prettyprinter-ansi-terminal ==1.1.3, any.prettyprinter-interp ==0.2.0.0, any.primitive ==0.8.0.0, - any.process ==1.6.18.0, + any.process ==1.6.17.0, any.profunctors ==5.6.2, any.random ==1.2.1.1, any.recursion-schemes ==5.2.2.5, @@ -261,8 +261,6 @@ constraints: any.Cabal ==3.8.1.0, any.strict-tuple ==0.1.5.3, any.string-interpolate ==0.3.2.1, string-interpolate -bytestring-builder -extended-benchmarks -text-builder, - any.stringsearch ==0.3.6.6, - stringsearch -base3 +base4, any.syb ==0.7.2.4, any.tagged ==0.8.8, tagged +deepseq +transformers, diff --git a/shell.nix b/shell.nix index 702437952..18a999506 100644 --- a/shell.nix +++ b/shell.nix @@ -17,7 +17,10 @@ pkgs.mkShell { pkgs.haskellPackages.cabal-gild pkgs.dtc pkgs.gcc - pkgs.haskell.compiler.ghc94 + + # Clash throws an error on 9.4.8 to 9.6.2 + # See https://github.com/clash-lang/clash-compiler/pull/2711/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R80 + pkgs.haskell.compiler.ghc947 pkgs.pkg-config pkgs.python311Full pkgs.python311Packages.matplotlib