1. 12 Mar, 2019 1 commit
  2. 11 Mar, 2019 1 commit
  3. 09 Oct, 2018 1 commit
  4. 04 Oct, 2018 3 commits
  5. 02 Oct, 2018 5 commits
  6. 25 Apr, 2018 4 commits
  7. 26 Mar, 2018 1 commit
    • Greenthreads is now a STATIC library instead of a SHARED library.
      
      The shared library was causing a double sc_simcontext initialization,
      because SystemC static library was included both in greentreads.dll
      and toplevel.exe.
      Clement Deschamps authored
  8. 25 Jan, 2018 6 commits
  9. 23 Jan, 2018 1 commit
  10. 13 Dec, 2017 1 commit
  11. 27 Nov, 2017 1 commit
  12. 24 Nov, 2017 3 commits
  13. 04 Aug, 2017 2 commits
    • greenthreads: Fixes
      
      1. CanLock
      The qemu thread could unlock and relock the ‘CanLock’ without
      SystemC actually ‘waking’. This confused the algorithm.
      Solution- only SystemC can re-take the locks. It can do so at
      any time. We require a counter and a mutex…
      
      2. The ‘sync source’ was the point at which  SystemC was released (with
      ‘unlock’ - inside simplecpu). That meant SystemC free-wheeled until the
      Qemu thread either went through an ‘inline sync’ or completed the
      transaction.
      
      Massive change:
              Split the ‘lock’ from the ’sync at’ mechanism.
              Move the ‘lock’ to the inline sync
      Now we only allow SystemC to execute when the txn gives it something to
      do, SystemC should not ‘free wheel’ into the future….!
      
      3. in either case, this test case is tricky - the time between events
      is 250ms, the quantum is 10us.
      So - we expect Qemu to tell SystemC about 25000 quantums to generate 1
      event (if my maths is right). Seems a lot…
      
      4. Finally ‘sem_trywait’ can return 0 in cases other than the lock is
      unavailable…. we should simply retry, rather than bailing out! (That was
      fun to find!)
      
      Summary:
      the ‘sync source’ simply does a sync (lockAt(time)) - which should be
      renamed syncAt(time).
              This MAY change the window, it may block the process - it may
      ‘kick’ systemc and make it pause, whatever….
      
      the central sync maintains a window for SystemC. If SystemC is behind,
      it allows it to catchup. If it’s ahead, it ‘sleeps’ (waiting for a txn,
      or the window to change etc).
      
      inlinesync’s stop the central window from sleeping, - run the txn - and
      then re-allow the window to sleep
      
      See merge request !51
      BURTON Mark authored
    • 1. CanLock
      The qemu thread could unlock and relock the ‘CanLock’ without
      SystemC actually ‘waking’. This confused the algorithm.
      Solution- only SystemC can re-take the locks. It can do so at
      any time. We require a counter and a mutex…
      
      2. The ‘sync source’ was the point at which  SystemC was released (with
      ‘unlock’ - inside simplecpu). That meant SystemC free-wheeled until the
      Qemu thread either went through an ‘inline sync’ or completed the
      transaction.
      
      Massive change:
              Split the ‘lock’ from the ’sync at’ mechanism.
              Move the ‘lock’ to the inline sync
      Now we only allow SystemC to execute when the txn gives it something to
      do, SystemC should not ‘free wheel’ into the future….!
      
      3. in either case, this test case is tricky - the time between events
      is 250ms, the quantum is 10us.
      So - we expect Qemu to tell SystemC about 25000 quantums to generate 1
      event (if my maths is right). Seems a lot…
      
      4. Finally ‘sem_trywait’ can return 0 in cases other than the lock is
      unavailable…. we should simply retry, rather than bailing out! (That was
      fun to find!)
      
      Summary:
      the ‘sync source’ simply does a sync (lockAt(time)) - which should be
      renamed syncAt(time).
              This MAY change the window, it may block the process - it may
      ‘kick’ systemc and make it pause, whatever….
      
      the central sync maintains a window for SystemC. If SystemC is behind,
      it allows it to catchup. If it’s ahead, it ‘sleeps’ (waiting for a txn,
      or the window to change etc).
      
      inlinesync’s stop the central window from sleeping, - run the txn - and
      then re-allow the window to sleep
      Clement Deschamps authored
  14. 27 Jul, 2017 2 commits
    • Minor fixes for mingw
      
      - Replaced gs_param<unsigned long long int> with gs_param<gs_uint64>
      - Removed exception specification (throw) as it is now deprecated
      
      See merge request !50
      BURTON Mark authored
    • - Replaced gs_param<unsigned long long int> with gs_param<gs_uint64>
      - Removed exception specification (throw) as it is now deprecated
      Clement Deschamps authored
  15. 26 Jul, 2017 1 commit
  16. 13 Jul, 2017 2 commits
  17. 12 Jul, 2017 4 commits
  18. 15 Jun, 2017 1 commit
    • dummyprotocol: implement transport_dbg
      
      This implements transport_dbg for DummyProtocol.
      
      Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
      
      See merge request !45
      BURTON Mark authored