{"action":"created","issue":{"url":"https://api.github.com/repos/ucb-bar/chisel3/issues/122","repository_url":"https://api.github.com/repos/ucb-bar/chisel3","labels_url":"https://api.github.com/repos/ucb-bar/chisel3/issues/122/labels{/name}","comments_url":"https://api.github.com/repos/ucb-bar/chisel3/issues/122/comments","events_url":"https://api.github.com/repos/ucb-bar/chisel3/issues/122/events","html_url":"https://github.com/ucb-bar/chisel3/pull/122","id":141439622,"number":122,"title":"Add globalReset to stop assertions from firing in sim reset","user":{"login":"jackkoenig","id":8584418,"avatar_url":"https://avatars.githubusercontent.com/u/8584418?v=3","gravatar_id":"","url":"https://api.github.com/users/jackkoenig","html_url":"https://github.com/jackkoenig","followers_url":"https://api.github.com/users/jackkoenig/followers","following_url":"https://api.github.com/users/jackkoenig/following{/other_user}","gists_url":"https://api.github.com/users/jackkoenig/gists{/gist_id}","starred_url":"https://api.github.com/users/jackkoenig/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackkoenig/subscriptions","organizations_url":"https://api.github.com/users/jackkoenig/orgs","repos_url":"https://api.github.com/users/jackkoenig/repos","events_url":"https://api.github.com/users/jackkoenig/events{/privacy}","received_events_url":"https://api.github.com/users/jackkoenig/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-03-17T00:17:26Z","updated_at":"2016-03-17T20:06:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ucb-bar/chisel3/pulls/122","html_url":"https://github.com/ucb-bar/chisel3/pull/122","diff_url":"https://github.com/ucb-bar/chisel3/pull/122.diff","patch_url":"https://github.com/ucb-bar/chisel3/pull/122.patch"},"body":"Fix for #121 \r\n\r\nAdd a global reset that is passed throughout the circuit and is checked in conditions for assertions. \r\n\r\nFor this to work, simulations must drive reset high at the top-level for long enough that all local resets are driven high. \r\n\r\nFeedback would be appreciated. "},"comment":{"url":"https://api.github.com/repos/ucb-bar/chisel3/issues/comments/198061145","html_url":"https://github.com/ucb-bar/chisel3/pull/122#issuecomment-198061145","issue_url":"https://api.github.com/repos/ucb-bar/chisel3/issues/122","id":198061145,"user":{"login":"ducky64","id":1069863,"avatar_url":"https://avatars.githubusercontent.com/u/1069863?v=3","gravatar_id":"","url":"https://api.github.com/users/ducky64","html_url":"https://github.com/ducky64","followers_url":"https://api.github.com/users/ducky64/followers","following_url":"https://api.github.com/users/ducky64/following{/other_user}","gists_url":"https://api.github.com/users/ducky64/gists{/gist_id}","starred_url":"https://api.github.com/users/ducky64/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ducky64/subscriptions","organizations_url":"https://api.github.com/users/ducky64/orgs","repos_url":"https://api.github.com/users/ducky64/repos","events_url":"https://api.github.com/users/ducky64/events{/privacy}","received_events_url":"https://api.github.com/users/ducky64/received_events","type":"User","site_admin":false},"created_at":"2016-03-17T20:06:51Z","updated_at":"2016-03-17T20:06:51Z","body":"What are the longer-term implications of this? You now essentially have a \"hidden\" (well, at least not obvious to someone who hasn't looked through the Chisel internals) reset pin that is wired up implicitly all the way to the top level, and that will prevent assertions (but not other things) from triggering.\r\n\r\nStylistically, it seems very much like a quick-fix that was tacked on instead of a clean solution that we would expect from core infrastructure like Chisel: only one global reset, special case code paths, special case code that only triggers in certain cases (globalReset only affects assertions, and nothing else - so it's not a reset in the strictest sense), not well documented (documentation for assert wasn't changed, while it's arguable this adds desirable behavior, someone may well depend on resets actually being pipelined).\r\n\r\nIs there no way to fix this in rocket? Perhaps ORing the pipelined reset registers with the non pipelined reset line? Or initializing the reset registers to true?"}}